if标签
<select id="querySomethingBySomeParam" resultType="OrderItem" >
select * from ORDER_ITEM where
<if test="id!=null">
id =#{id}
</if>
<if test="name!=null">
and name =#{NAME}
</if>
</select>
上面的sql存在的问题,当id=null,name不为null的时候,拼接的sql语句是
select * from ORDER_ITEM where and name =?
这样会报错,可以修改成下面的语句
<select id="querySomethingBySomeParam" resultType="OrderItem" >
select * from ORDER_ITEM where 1=1
<if test="id ! = null">
and id =#{id}
</if>
<if test="name ! = null">
and name =#{NAME}
</if>
</select>
where标签
!--这里的where会自行判断是不是需要添加and 的操作,当id为null的时候,会自行删除后面的and-->
<select id="querySomethingBySomeParam" resultType="OrderItem" >
select * from ORDER_ITEM
<where>
<if test="id!=null">
id =#{id}
</if>
<if test="name!=null">
and name =#{NAME}
</if>
</where>
</select>
这里的where标签可以自行判断是否需要添加and或者取消and的操作。