当前位置: 首页 > article >正文

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);


http://www.kler.cn/a/312116.html

相关文章:

  • pgsql和mysql的自增主键差异
  • python识别ocr 图片和pdf文件
  • 使用Git工具在GitHub的仓库中上传文件夹(超详细)
  • 当AI遇上时尚:未来的衣橱会由机器人来打理吗?
  • 大模型 | 2024年中国智能算力行业白皮书 | 附PDF免费下载
  • 【Python】轻松解析JSON与XML:Python标准库的json与xml模块
  • QT应用开发的C++功能框架以及实战入门开发项目场景
  • 计算机网路(应用层)
  • 中台架构下的数据仓库与非结构化数据整合
  • Nuxt Kit 中的插件:创建与使用
  • ffmpeg实现视频的合成与分割
  • 特征融合魔改,看这一篇就够了
  • Microsoft Edge 五个神级插件
  • vue 中属性值上变量和字符串怎么拼接
  • layui table中的checkbox禁用问题
  • Vue3.0组合式API:使用ref获取DOM元素
  • 中国电子学会202403青少年软件编程(Python)等级考试试卷(二级)真题
  • 数据库———事务及bug的解决
  • SpringCloud~
  • idea 恢复 pom 文件呈现灰色并带删除线
  • 【JavaEE】线程创建和终止,Thread类方法,变量捕获(7000字长文)
  • redis集群创建问题处理
  • 408算法题leetcode--第六天
  • 【项目案例】物联网比较好的10+练手项目推荐,附项目文档/源码/视频
  • Elasticsearch:一次生产集群 ES Watcher 失效的深度排查与分析 - 全过程剖析与解决方案
  • 【面试八股总结】GMP模型