1.”双引号”直接连接
<select id="getUsersByName" parameterType="string" resultType="com.buaa.mybatis.po.User">
SELECT * FROM USER WHERE username LIKE "%"#{name}"%"
</select>
评价:最推荐的方式! 注意,例子中使用了两个%连接搜索条件,在左边有%的情况下是不走索引的,会影响查询效率。解决方法可以参考-聚合索引。
2.MySQL内置函数CONCAT()
<select id="getUsersByName" parameterType="string" resultType="com.buaa.mybatis.po.User">
SELECT * FROM USER WHERE username LIKE CONCAT('%',#{name},'%')
</select>
评价:使用内置函数来解决,相当于数据库在执行时增加了一点运算量……
3.连接符${}
<select id="getUsersByName" parameterType="string" resultType="com.buaa.mybatis.po.User">
SELECT * FROM USER WHERE username username LIKE '%${value}%'
</select>
评价:不推荐。大家都知道${}的方式在mybatis中就是相当于直接拼接,存在SQL注入的风险。
4.在对象设置属性时添加%
getUsersByName("%"+username+"%");
评价:不推荐。第一,这样让我们业务代码和mybatis框架关联太紧密,第二,每个对象都要多写这些代码,增加了硬编码量