zoukankan      html  css  js  c++  java
  • MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用

    转载自

    MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用

    LambdaQueryWrapper

    https://blog.csdn.net/lt326030434/article/details/106571670

    LambdaQueryWrapper条件构造器方法对应Sql

    setSqlSelectSELECT 查询字段举例
    where WHERE 语句,拼接 + WHERE 条件  
    and AND 语句,拼接 + AND 字段=值  
    andNew AND 语句,拼接 + AND (字段=值)  
    or OR 语句,拼接 + OR 字段=值 .eq(" name “,” 木 子 “). or ( ). eq (” id ", 1 ) => name=“木子” or id=1 注意事项:主动调用or表示下一个方法不是and连接,不调用默认为使用and连接
    orNew OR 语句,拼接 + OR (字段=值)  
    eq 等于= .eq(“name”,“木子”) => name=“木子”
    allEq 基于 map 内容等于=  
    ne 不等于<>  
    gt 大于>  
    ge 大于等于>=  
    lt 小于<  
    le 小于等于<=  
    like 模糊查询 LIKE .like(“name”,“木子”) => name like ‘%木子%’
    notLike NOT LIKE模糊查询  
    in IN 查询 .in(“age”,{1,2,3}) => age in (1,2,3)
    notIn NOT IN 查询  
    isNull NULL 值查询  
    isNotNull IS NOT NULL  
    groupBy 分组 GROUP BY  
    having HAVING 关键词  
    orderBy 排序 ORDER BY  
    orderAsc Asc 排序 ORDER BY  
    orderDesc DESC 排序 ORDER BY  
    exists EXISTS 条件语句  
    notExists NOT EXISTS 条件语句  
    between BETWEEN 条件语句 .between (“age”,1,2) => age between 1 and 2
    notBetween NOT BETWEEN 条件语句  
    addFilter 自由拼接 SQL  
    last 拼接在最后,例如:last(“LIMIT 1”)  

    假如我们有一张banner_item表,现需要通过banner_id查出所有数据(查询List)
    在这里插入图片描述

    @Data
    public class BannerItem {
    
        private Long id;
    
        private String name;
    
        private String img;
    
        private String keyword;
    
        private Integer type;
    
        private Long bannerId;
    }
    • QueryWrapper

    最基础的使用方式是这样

    // 查询条件构造器
    QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
    wrapper.eq("banner_id", id);
    // 查询操作
    List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
     

     

    然后我们可以引入lambda,避免我们在代码中写类似的于banner_id的硬编码

    QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
    wrapper.lambda().eq(BannerItem::getBannerId, id);
    List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
    • LambdaQueryWrapper

    为了简化lambda的使用,我们可以改写成LambdaQueryWrapper构造器,语法如下:

    LambdaQueryWrapper<BannerItem> wrapper = new QueryWrapper<BannerItem>().lambda();
    wrapper.eq(BannerItem::getBannerId, id);
    List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
     

     

    我们可以再次将QueryWrapper<BannerItem>.lambda()简化,变成这个样子

    LambdaQueryWrapper<BannerItem> wrapper = new LambdaQueryWrapper<>();
    wrapper.eq(BannerItem::getBannerId, id);
    List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
     
    • 链式查询

    MyBatis-Plus还提供了一种链式查询的方式,和上面的代码效果一样。
    但是这种写法偏向于炫技,可读性没有上面的代码强,大家可以根据需要自行选择方式。

    List<BannerItem> bannerItems = new LambdaQueryChainWrapper<>(bannerItemMapper)
                            .eq(BannerItem::getBannerId, id)
                            .list();
     

    如果只想查询一条记录,例如通过id查询某条记录的详情,使用.one()即可,例如

    BannerItem bannerItem = new LambdaQueryChainWrapper<>(bannerItemMapper)
                            .eq(BannerItem::getId, id)
                            .one();
     

     

     

    一个使用较多的项目模板 https://gitee.com/xqnode/x-admin

     

    MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用

  • 相关阅读:
    LOJ.6435.[PKUSC2018]星际穿越(倍增)
    webpack---style-loader的配置:insertAt 和insert
    react-native项目启动报错——watchman安装问题(mac pro)
    js基础---event.target/ event.currentTarget/this的区别
    js基础---querySelector系列和getElementsBy系列获取页面元素的最大差异(返回值的属性区别)
    js基础----用户在浏览器输入网址后页面的加载
    js基础----dom节点使用console.log打印始终是最新的现象(待验证)
    js基础---嵌套循环中的break使用
    环境变量的配置之——全局安装@vue/cli脚手架,出现vue不是内部或外部命令(Windows)
    Chocolatey 和 Scoop的安装和介绍 (windows)
  • 原文地址:https://www.cnblogs.com/xx123/p/14871937.html
Copyright © 2011-2022 走看看