最近做项目遇到了一个条件的拼接,大家都知道 如果用的是mybatis的话由cretrial用example的方式去拼接条件,但是在mybatis-plus当中呢?
在这里为大家介绍两种构造的方式:
一种是用EntityWrapper的方式去构造 例如下面:
比如说我们的查询语句是:
select * from user where id in [ 1,2,3] and (user_name like '%'+userName+'%' or address like '%'+address+'%';
这样的sql我们应该去怎样拼接呢?
EntityWrapper<userEntity> entityEntityWrapper = new EntityWrapper<>();
//在这里我们使用MP的selectPage方法去查,关于MP搭建可以去看之前的博文(关于mybatis-plus的)
Page<userEntity> userList= qdDeviceService.selectPage(new Page<userEntity>(),
//先来构建in的条件
entityEntityWrapper.in("device_id",ids)
//之后以and连接并列的条件 后面更1=1 来保持成立的确定性
.and("1=1")
//之后再以like来拼接你所需要的模糊查询
.like("user_name", (String) params.get("userName"))
.like("address", (String) params.get("address"))
);
//以上就是EntityWrapper的方式去查询
//当然再实际的项目当中我们应该对前端传递过来的数据进行校验之后再进行操作,这里就省略了
下面我们再来看一下 QueryWrapper的写法:
QueryWrapper<userEntity> userWrapper = new QueryWrapper<>();
String userName= (String) map.get("userName");
String address= (String) map.get("address");
userWrapper.and(wrapper -> wrapper.like("user_name", userName).or().like("address", address);
//当然再这条件之后还可以进行条件的封装,具体拼接的符号可以去参照MP的官网来查看
以上就是mybatis-plus关于两种条件的添加