我对此深表思考,但我要做的是只从object.attribute
中选择真实的列。
场景:我有一个函数java,在这个函数内部我有object
,其中有50 attribute
有真或假。我正在尝试创建一个动态查询,仅在object.attribute
为true
时才选择列。例如,Person
是我的对象,有50个属性name, age, sex, wage
,依此类推。如果Person.name
为true
,Person.sex
为true
,Person.wage
为false
,Person.age
为false
,请选择仅name
和sex
列。
我尝试使用String sql = "...IF ELSE ..."
或String sql = "...CASE WHEN..."
,但我无法创建true
进来的逻辑,如果column_name = object.attribute(true)
,则返回null。创建程序更好吗?或者它可以在查询中完成?我怎样才能做到这一点?
如果仅显示姓名和性别,则必须以“John”,“31”为例
答案 0 :(得分:0)
您需要制作动态SQL并使用参数来正确执行此操作。因此,您将为SELECT构建SQL字符串,但查询所需的任何非静态参数都是参数。查询本身。
所以,你会在代码中得到一些东西:
String Sql = ""
Sql=sql + " SELECT "
IF attribute.value==true then Sql=sql + value.name + " "
IF attribute.value==true then Sql=sql + value.name + " "
IF attribute.value==true then Sql=sql + value.name + " "
Sql=sql + "FROM TABLE WHERE StaticField=StaticValue or StaticField=@Var1"
你永远不应该连接用户输入;这是参数(上例中的@ Var1)发挥作用的地方。