今天来看看mybatis-plus的条件构造器,这个东西是非常好用啊,不用写sql语句就完成了sql查询等其他操作,nb-plus
springboot
mybatis-plus 3.x
1、它可以实现很多复杂的查询
根据条件查询
@Autowired(required = false)
private UserMapper userMapper;
@Autowired
private IUserService iUserService;
/**
* 以前默认是叫EntityWrapper,现在叫QueryWrapper
*/
/**
* 根据条件查询
*/
@Test
public void select(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper.isNotNull("name") //name不为空的用户
.isNotNull("email") //邮箱不为空
.ge("age",12); //年龄大于等于12
List<User> list=userMapper.selectList(wrapper);
System.out.println(list);
}
/**
* 根据名字查询
*/
@Test
public void selectName(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper.eq("name","ting");
List<User> list=userMapper.selectList(wrapper);
System.out.println(list);
}
/**
* 查询 10 到 20 岁的用户数
*/
@Test
public void selectByAge(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper.between("age",10,21);
List<User> list=userMapper.selectList(wrapper);
System.out.println(list);
}
2、模糊查询
/**
* 模糊查询
*/
@Test
public void selectLike(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper
.notLike("name","2")
.like("name","t")
//右查询
.likeRight("email","234");
List<Map<String,Object>> users=userMapper.selectMaps(wrapper);
System.out.println(users);
}
3、子查询
/**
* 子查询
*/
@Test
public void selectLike2(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper.inSql("id","select id from user where age<21");
List<Object> users=userMapper.selectObjs(wrapper);
System.out.println(users);
}
4、排序
/**
* 排序
*/
@Test
public void selectByOrder(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
//降序排序
wrapper.orderByDesc("id");
List<User> users=userMapper.selectList(wrapper);
System.out.println(users);
}
5、部分字段更新
/**
* 部分字段更新
*/
@Test
public void update(){
UpdateWrapper<User> wrapper=new UpdateWrapper<>();
User user=new User();
//更新字段
wrapper.set("name","xyz");
wrapper.eq("id",1321972874844389378L);
System.out.println("更新结果:"+iUserService.update(user,wrapper));
}
5、分页,需要新建一个配置类
@Configuration
@MapperScan("com.king.mapper")
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
//paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
}
分页测试方法:
/**
* 分页
*/
@Test
public void page(){
//当前页1,每页大小2
IPage<User> userIPage=new Page<>(1,1);
userIPage=userMapper.selectPage(userIPage,null);
List<User> list=userIPage.getRecords();
System.out.println(list);
}
OK简单的条件构造器使用就是这样了,更多的内容请深入学习咯