mybatisplus分页查询学习
mybatisplus的配置类
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor()
{
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
1.测试类-普通分页 没有查询条件
@Test
public void testSelectPage()
{
//封装Page对象作为分页查询参数对象
Page<User> page = new Page<>(3, 5);// 当前页,每页显示条数
//Page对象既可以作为分页查询参数的封装对象,也可以作为分页查询结果的保存对象
// 调用selectPage方法,传入分页对象作为第一个参数,第二个参数是查询条件
Page<User> pageResult = userMapper.selectPage(page, null);
log.info(pageResult.getRecords());
}
2.带有查询条件的分页查询QueryWrapper
QueryWrapper
wrapper(包装)查询条件对象
@Test
public void testSelectPageWithGtLt()
{
// 查询条件
QueryWrapper<User> userqueryWrapper = new QueryWrapper<>();
userqueryWrapper.gt("id",5).lt("id",10);
List<User> userList=userMapper.selectList(userqueryWrapper);
log.info(userList);
}
@Test
public void testSelectPageWithLike()
{
// 查询条件
QueryWrapper<User> userqueryWrapper = new QueryWrapper<>();
userqueryWrapper.like("username","a")
.orderByDesc("id");
List<User> userList=userMapper.selectList(userqueryWrapper);
log.info(userList);
}
3.多条件分页查询
@Test
public void testSelectPage()
{
// 查询条件
QueryWrapper<User> userqueryWrapper = new QueryWrapper<>();
userqueryWrapper.like("username","a")
.orderByDesc("id");
// 分页查询
Page<User> page = new Page<>(1, 4);
// 执行查询
Page<User> pageResult=userMapper.selectPage(page,userqueryWrapper);
log.info(pageResult.getRecords());
}
4.lambda格式查询条件分页查询
LambdaQueryWrapper
@Test
public void testSelectPageLambda()
{
// 查询条件
LambdaQueryWrapper<User> userqueryWrapper = new LambdaQueryWrapper<>();
userqueryWrapper.gt(User::getId,10)
.like(User::getUsername,"a")
.orderByDesc(User::getId);
// 分页查询
Page<User> page = new Page<>(1, 4);
// 执行查询
Page<User> pageResult=userMapper.selectPage(page,userqueryWrapper);
log.info(pageResult.getRecords());
}
5.wrapper动态条件拼接
@Test
public void testSelectPageLambdaCondition()
{
User user=new User();// 假设是前端传来的条件对象
user.setId(20);
user.setUsername("a");
// 查询条件
LambdaQueryWrapper<User> userqueryWrapper = new LambdaQueryWrapper<>();
userqueryWrapper.gt(user.getId()!=null,User::getId,10)
.like(user.getUsername()!=null && user.getUsername()!="",User::getUsername,"a")
.orderByDesc(user.getId()!=null,User::getId);
// 分页查询
Page<User> page = new Page<>(1, 4);
// 执行查询
Page<User> pageResult=userMapper.selectPage(page,userqueryWrapper);
log.info(pageResult.getRecords());
}
判断条件也可以写成
Objects.nonNull(user.getId())
6.条件或者
两个条件之间添加.or()
7.查询投影 查询指定的字段
默认查询所有字段,需要查询指定的字段
lambda添加select
1、查询模型类存在的部分属性
@Test
public void testSelectPageWithSelect()
{
LambdaQueryWrapper<User> userqueryWrapper = new LambdaQueryWrapper<>();
userqueryWrapper.select(User::getId,User::getUsername,User::getNickName);
User user=new User();// 假设是前端传来的条件对象
user.setId(20);
user.setUsername("a");
// 查询条件
userqueryWrapper.gt(Objects.nonNull(user.getId()),User::getId,10)
.or()
.like(user.getUsername()!=null && user.getUsername()!="",User::getUsername,"a")
.orderByDesc(user.getId()!=null,User::getId);
// 分页查询
Page<User> page = new Page<>(1, 4);
// 执行查询
Page<User> pageResult=userMapper.selectPage(page,userqueryWrapper);
log.info(pageResult.getRecords());
}
2、查询模型类中未定义的属性
通过selectMaps查询
//通过selectMaps查询 //mybatis-plus将查询到的每一条数据中的列名作为map的key,列的值作为map的value, //每一条数据封装为一个map,将所有的map封装为一个list集合返回 List<Map<String,Object>> mapList=userMapper.selectMaps(userqueryWrapper);