日期:2014-05-17 浏览次数:20685 次
在Ibatis中<dynamic/>是Ibatis的动态查询条件,根据该属性中所包含的元素进行判断是否执行某一条SQL语句。 1、使用dynamic时 select * from Person表 <dynamic prepend="where"> <isNotNull property="name" prepend="and"> name=#name# </isNotNull> <isNotNull property="sex" prepend="and"> sex=#sex# </isNotNull> </dynamic> 结果 当name、sex都非null时打出如下的SQL语句: select Person表 where (and) name= ? , and sex= ?,很显然执行语句时,name前的and已经自动清除。 2、不使用dynamic时 select * from Person表 <isNotNull property="name" prepend="and"> name=#name# </isNotNull> <isNotNull property="sex" prepend="and"> sex=#sex# </isNotNull> 结果 当name、sex都非null时打出如下的sql语句: select * Person表 where and name= ? , and sex= ?,出现语句错误。
------解决方案--------------------
可能因为你and 或者 where 后面没加空格?或者啥的 最好把sql打印出来