Mybatis多条件筛选

Mybatis多条件筛选

最近用mybatis做项目数据库框架,学习了很多知识,今天分享两个小知识:


关于if标签的使用

我们在做业务时,经常遇到按照条件查询,例如:

我们要根据年龄和性别筛选出用户列表
select * from user where age=#{age} and sex=#{sex}

后来我们又增加了一个新需求:
我们还想通过年龄来筛选用户,当有性别条件时,需要根据年龄和性别筛选
使用mybatis的if标签就可以实现了
我们可以这样写:

select * from user where age=#{age} 
<if test="sex!=null">
    and sex=#{sex}
 </if>

后来我们又有了新需求:
如果接口传入了性别,就根据性别筛选,如果传入了年龄,就根据年龄筛选,如果两者都有,需要根据两者一起筛选,如果两者没有,不带筛选条件。
这下可就难住了写sql的小伙伴了,where 改放在什么位置,怎么写,sql才不会报错。

多条件筛选去掉and标签

主要实现方法有两种:

方法一:使用mybatis自带的where标签

可以写成如下这样:

select * from user
<where>
<if test="sex!=null">
    and sex=#{sex}
</if>
<if test="age!=null">
    and age=#{age}
</if>
<where>

当where 语句条件都不存在,标记会自动将其后第一个条件的and或者是or给忽略掉,这样就不会多出and,或者or了。

方法二:where 1=1小技巧

有了它我们就可以这样写:

select * from user where  1=1
<if test="sex!=null">
    and sex=#{sex}
</if>
<if test="age!=null">
    and age=#{age}
</if>

至此,搞定了联合条件筛选的需求,深受小伙伴的喜爱。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值