mybatis-plus sql拼接加括号

上周的时候遇到一个sql需求,传入List集合,将两个字段作为联合条件,并上其他字段条件,进行批量查询.

示例:

student表:

主键id学生名称学生年龄老师pid
idname

age

tid

要求将【学生名称、学生年龄】作为联合条件(可同时传入多个学生,且这两个字段需同时满足),并且tid属于"1"旗下的

seletct * from t_student t1 
where 
(
(t1.name = ? and t1.age = ?)
 or
(t1.name = ? and t1.age = ?)
or
(t1.name = ? and t1.age = ?)
)
and t1.tid = 1

懒得写xml就看看mybatis-plus里面有没有方法可以直接用。最终方法如下 

//传入的tid
Long tid = tid;
//传入的实体
List<Student> list = new ArrayList<>();

QueryWrapper<Student> queryWrapper = new QueryWrapper();
queryWrapper.and(wrapper -> {
            for(Student student: list) {
                wrapper.or(wp -> wp.eq("name", student.getName)).eq("age",student.getAge);
            }
        });
queryWrapper.eq("tid",tid)

最后

一开始看的官方文档上,用的.or方法,但是拼接出来的sql不是我想要的

seletct * from t_student t1 
where 
(t1.name = ? and t1.age = ?)
or
(t1.name = ? and t1.age = ?)
or
(t1.name = ? and t1.age = ?)
and t1.tid = 1

//这样拼接,只是把两个字段作为联合条件,只要有一个都算满足

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值