MyBatis模糊查询——bind元素使用

MyBatis模糊查询——bind元素使用

1. 以往模糊查询方式
<select id="findByUsername" parameterType="String" resultType="user">
    SELECT * FROM user WHERE username LIKE concat('%',#{username},'%')
</select>

使用concat进行拼接。

1.1. 存在的问题

concat只存在于mysql数据库中,而对于别的数据库如Oracle数据库并不适用。这就使得,如果更换数据库,就需要修改源码。

2. bind元素的引入
	bind元素的作用是通过OGNL表达式去自定义一个上下文变量,这样更方便使用。在进行模糊查询时,如果是Mysql数据库,常常会用到的是一个concat,它用%和参数相连。然而在Oracle数据库则没有,Oracle数据库使用||进行连接。这样SQL就需要提供两种形式去实现。但是有了bind元素,就不必使用数据库的语言,而是使用MyBatis的动态SQL实现。
3. bind元素使用
<select id="findByUsername" parameterType="String" resultType="user">
    <bind name="pattern" value="'%'+_parameter+'%'"/>
    SELECT * FROM user WHERE username LIKE #{pattern}
</select>

多参数情况:可定义多个bind元素

public List<User> findByUsernameAndSex(@Param("username") String username,@Param("sex") String sex);
    <select id="findByUsernameAndSex" resultType="user">
        <bind name="pattern_username" value="'%'+username+'%'"/>
        <bind name="pattern_sex" value="'%'+sex+'%'"/>
        SELECT * FROM user WHERE username LIKE #{pattern_username} AND sex LIKE #{pattern_sex}
    </select>
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值