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

MyBatisPlus的链式查询LambdaQueryChainWrapper

LambdaQueryChainWrapper是MyBatis-Plus中的一个链式查询封装类,用于构建带有条件的查询语句。

  1. LambdaQueryChainWrapper
  • 可以通过链式调用一系列方法来构建查询条件。这些方法包括eq、ne、gt、ge、lt、le等等,用于设置等于、不等于、大于、大于等于、小于、小于等于等条件。
  • 可以用实体类的属性名作为参数,避免直接写数据库表字段名
  • 不支持 分组过滤。没法使用聚合函数。
  1. 使用场景
  • one() 查询一条记录
  • list() 查询多条记录
  • page() 分页查询
  1. 示例代码
 /**
     *  链式查询:  
     *   1.使用lambda表达式 ,通过方法引用的方式来使用实体字段名的操作,
     *               避免直接写数据库表字段名时的错写名字
     *   2.不支持  分组过滤
     */
    @Test
    public  void  test1(){
        System.out.println("------//链式查询:  使用 Lambda 表达式的链式查询对象--.one");
        LambdaQueryChainWrapper<User> lambdaQueryChainWrapper=new LambdaQueryChainWrapper<>(userMapper);
        //User one1=lambdaQueryChainWrapper.eq(User::getId,1).one();
        User one3=lambdaQueryChainWrapper.like(User::getName,"up")
                .orderByDesc(User::getId)
                .last("limit 1")
                .one();//获取满足条件且排序后的第一条记录
        System.out.println(one3);

        System.out.println("---- //链式查询:  使用 Lambda 表达式的链式查询对象--.list");
        LambdaQueryChainWrapper<User> lambdaQueryWrapper1 = new LambdaQueryChainWrapper<>(userMapper);
        List<User> userList1=lambdaQueryWrapper1.ge(User::getAge, 1)
                .like(User::getName, "up")
                .orderByDesc(User::getId)
                .list();//获取满足条件的所有记录
        userList1.forEach(System.out::println);//需要重写user的toString()

        System.out.println("---//链式查询:  使用 Lambda 表达式的链式查询对象--分页查询 .page");
        int pageNum=1;
        int pageSize=2;
        LambdaQueryChainWrapper<User> lambdaQueryWrapper2 = new LambdaQueryChainWrapper<>(userMapper);
        Page<User> userPage=lambdaQueryWrapper2.ge(User::getAge, 1)
                .like(User::getName, "up")
                .orderByDesc(User::getId)
                .page(new Page<>(pageNum, pageSize));//返回分页对象
        List<User> userList2 = userPage.getRecords();//分页数据
        long total=userPage.getTotal();//数据总数
        System.out.println("total="+total);
        userList2.forEach(System.out::println);

        System.out.println("---链式查询不支持分组过滤。直接使用基础的QueryWrapper--分组过滤 groupBy  having");
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        wrapper.select("version","sum(age) as num")
                .groupBy("version")
                .having("sum(age)>0")
                .orderByDesc("num");
        //使用Map获取返回结果
        List<Map<String,Object>> list=userMapper.selectMaps(wrapper);
        list.forEach(System.out::println);
    }

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

相关文章:

  • 解决后端接口返回Long类型参数导致的精度丢失问题
  • 内存 管理
  • 【Pandas】pandas Series groupby
  • 常用排序算法之插入排序
  • Linux TCP 之 RTT 采集与 RTO 计算
  • 【K8S系列】K8s 领域深度剖析:年度技术、工具与实战总结
  • python常用pandas函数nlargest / nsmallest及其手动实现
  • 【MySQL】DQL的总结和案例学习
  • 开源节点框架STNodeEditor使用
  • 【数字电子技术课程设计】多功能数字电子钟的设计
  • python-题库篇-数学
  • 【QT+QGIS跨平台编译】之二十六:【SpatialIndex+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • Java技术栈 —— Hive与HBase
  • 言语必备实词成语——成语(二)
  • 【LeetCode】刷题总结 - 15. 三数之和
  • linux编译ffmpeg动态库
  • figure方法详解之清除图形内容
  • k8s版本升级到1.24.x
  • SpringBoot注解--02---常用注解汇总
  • 电子电器架构——车载网关转发buffer心得汇总
  • Redis核心技术与实战【学习笔记】 - 22.浅谈Redis的ACID相关知识
  • C语言函数递归详解
  • DP算法笔记
  • 机器学习本科课程 实验6 聚类实验
  • UE4运用C++和框架开发坦克大战教程笔记(十七)(第51~54集)
  • Node.js 文件系统操作指南