在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= ?,出现语句错误。
转自:http://blog.youkuaiyun.com/linguihairoger/article/details/6887215