1.关于接受参数时 #{} 与${} 之间的区别
简单一句句话说这两个符合#,$都可以接受参数,区别在于接受到的参数一个会给你自动加’ ‘而另一个不会,举个栗子:
select <include refid="baseColumns"/> from mt_room_resource
WHERE is_delete = 0
<if test="comId != null">
and com_id = #{comId}
</if>
这段sql被执行之后会变成这样的sql:
select * from mt_room_resource WHERE is_delete = 0 AND com_id=520;
当然这是你的公司id是bigInt或者其他数字类型,如果是字符串类型varchar(当然id一般都是数字,这里打个比方)生成的这条sql就会报错,这时就要用$接收对象,
select <include refid="baseColumns"/> from mt_room_resource
WHERE is_delete = 0
<if test="comId != null">
and com_id = ${comId}
</if>
2.关于mybatis中if条件
一般情况下使用if都是判断参数是否为null,如下
<if test="comId != null">
and com_id = #{comId}
</if>
但是我如果有其他特殊需求需要实现时可能要判断是否是某个字符串时该怎么办呢,看例子:
SELECT <include refid="baseColumns"/> FROM `mt_room_resource`
WHERE is_delete = 0
<if test="keyWord == null">
AND 1=1
</if>
<if test= 'keyWord != null and keyWord != "|"'>
AND (rr_room_name LIKE CONCAT('%',#{keyWord},'%') OR rr_room_position LIKE CONCAT('%',#{keyWord},'%') )
</if>
你可以看到这个时候 if test = ’ yy=”xxx” ‘ 是的我就是要说这个小细节.