需求是这样的一个界面中,有2个输入框A,B,用户可以只输入A或B,或全输入,或全不输入,也就是4种组合。
然后做查询,A和B输入的值都作为查询条件。然后一个表中有2个字段,col_a,col_b分别对应输入的A和B。关于动态那段,我是这样写的。select * from table <dynamic prepend="">
<isNotEmpty prepend="where" property="A">
(
table.col_a=#A#
<isNotEmpty prepend="and" property="B">
table.col_b=#B#
</isNotEmpty>
)
</isNotEmpty>
<isEmpty prepend="" property="A" >
(
<isNotEmpty prepend="where" property="B" >
table.col_b=#B#
</isNotEmpty>
)
</isEmpty> </dynamic> 现在的问题是! 如果输入A,则只输入A和输入A和B,2种情况没有问题。
如果不输入A,则另2种情况都提示sql没有正确结束。 请教了。暂时没配log,没办法打出最终的sql.
然后做查询,A和B输入的值都作为查询条件。然后一个表中有2个字段,col_a,col_b分别对应输入的A和B。关于动态那段,我是这样写的。select * from table <dynamic prepend="">
<isNotEmpty prepend="where" property="A">
(
table.col_a=#A#
<isNotEmpty prepend="and" property="B">
table.col_b=#B#
</isNotEmpty>
)
</isNotEmpty>
<isEmpty prepend="" property="A" >
(
<isNotEmpty prepend="where" property="B" >
table.col_b=#B#
</isNotEmpty>
)
</isEmpty> </dynamic> 现在的问题是! 如果输入A,则只输入A和输入A和B,2种情况没有问题。
如果不输入A,则另2种情况都提示sql没有正确结束。 请教了。暂时没配log,没办法打出最终的sql.
select * from table where A = XX and B = XX;
估计是当A没有值输入时,判断里没有把‘and’这个关键字没去掉.而造成了拼出来的是select * from table where and B = XX所以报错.
<isNotEmpty prepend="and" property="A">
table.col_a=#A#
</isNotEmpty>
<isNotEmpty prepend="and" property="B">
table.col_b=#B#
</isNotEmpty>