MyBatis Like 模糊查询解决策略

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框架关联太紧密,第二,每个对象都要多写这些代码,增加了硬编码量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值