国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Mybatis-Plus之四種lambda方式LambdaQueryWrapper,QueryWrapper<實(shí)體>().lambda(),LambdaQueryChainWrapper<實(shí)體>

這篇具有很好參考價(jià)值的文章主要介紹了Mybatis-Plus之四種lambda方式LambdaQueryWrapper,QueryWrapper<實(shí)體>().lambda(),LambdaQueryChainWrapper<實(shí)體>。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Mybatis-Plus之四種lambda方式

lambda四種表達(dá)形式

前言

使用了lambda表達(dá)式 可以通過方法引用的方式來使用實(shí)體字段名的操作,避免直接寫數(shù)據(jù)庫(kù)表字段名時(shí)的錯(cuò)寫名字;

一、LambdaQueryWrapper<>

 /**
      * lambda 條件構(gòu)造器
      * 生成的sql語(yǔ)句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ?
      */
     @Test
     public void selectLambda() {
         //創(chuàng)建lambda 條件構(gòu)造器 的三種方法
 //        LambdaQueryWrapper<User> lambda2 = new LambdaQueryWrapper<>();
 //        LambdaQueryWrapper<User> lambda = new QueryWrapper<User>().lambda();
         LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery();
         lambda3.like(User::getName, "雨").lt(User::getAge, 40);
         List<User> users = userMapper.selectList(lambda3);
         users.forEach(System.out::println);
     }

二、QueryWrapper<實(shí)體>().lambda()

 /**
  * 名字為王姓并且(年齡小于40并且郵箱不為空)
  * name like '王%' and (age <40 or email in not null)
  * 生成的sql語(yǔ)句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ?
  */
 @Test
 public void selectLambda2() {
     LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery();
     lambda3.likeRight(User::getName, "王").and(qw -> qw.lt(User::getAge, 40).or().isNotNull(User::getEmail));
 
     List<User> users = userMapper.selectList(lambda3);
     users.forEach(System.out::println);
 }

三、Wrappers.<實(shí)體>lambdaQuery(),Wrappers.lambdaQuery(實(shí)體.class)

Wrappers.<實(shí)體>lambdaQuery()

  /**
   * 自定義sql 使用
   * Dao層  代碼:
   *
   * @Select("select * from ${ew.customSqlSegment}")
   * List<User> selectAll(@Param(Constants.WRAPPER)Wrapper<User> wrapper);
   */
  @Test
  public void selectLambda4my() {
      LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery();
      lambda3.likeRight(User::getName, "王").and(qw -> qw.lt(User::getAge, 40).or().isNotNull(User::getEmail));
  
      List<User> users = userMapper.selectAll(lambda3);
      users.forEach(System.out::println);
  }

Wrappers.lambdaQuery(實(shí)體.class)
Mybatis-Plus之四種lambda方式LambdaQueryWrapper,QueryWrapper<實(shí)體>().lambda(),LambdaQueryChainWrapper<實(shí)體>

四、LambdaQueryChainWrapper<實(shí)體>(xxxxMapper)

 /**
  * lambda 條件構(gòu)造器第四種創(chuàng)建方式 MP 3.0.7 新增的方式
  * 生成的sql語(yǔ)句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age >= ?
  * 這個(gè)例子可以看出  代碼更簡(jiǎn)潔了
  * 生成的sql語(yǔ)句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age >= ?
  */
 @Test
 public void selectLambda3() {
     List<User> users = new LambdaQueryChainWrapper<User>(userMapper)
             .like(User::getName, "雨").ge(User::getAge, 20).list();
 
     users.forEach(System.out::println);
 }

QueryWrapper、LambdaQueryWrapper以及LambdaQueryChainWrapper用法

一、QueryWrapper

 .like("email", "24252") //email對(duì)應(yīng)數(shù)據(jù)庫(kù)中列名
  /**
       * 條件構(gòu)造器 查詢操作
       */
      @Test
      void TestQueryWrapperSelect() {
          //1、條件用法
          List<User> userList = userMapper.selectList(new QueryWrapper<User>()
                  .like("email", "24252")
                  .between("age", 20, 22)
                  .or()
                  .eq("name", "zcx")
          );
          System.out.println("userList:" + userList);
  
          //2、排序用法
          List<User> users = userMapper.selectList(new QueryWrapper<User>()
                  .eq("nick_name", "xx")
                  .orderByAsc("age")  //升序
  //                .orderByDesc("age") //降序
                  .last("limit 0,3") //last用法:在sql末尾添加sql語(yǔ)句,有sql注入風(fēng)險(xiǎn)
          );
          System.out.println("users:"+users);
  
      }

二、LambdaQueryWrapper

  queryWrapper.eq(User::getName,"liangd1"); //可以通過Lambda獲取數(shù)據(jù)庫(kù)列名
 @Test
     void TestLambdaQueryWrapper() {
         //1、查詢單條
         LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(User::getName,"liangd1");
         User selectOne = userMapper.selectOne(queryWrapper);
         System.out.println(selectOne);
 
         //2、查詢list以及統(tǒng)計(jì)條數(shù)
         queryWrapper.eq(User::getName, "zcx");
         List<User> userList = userMapper.selectList(queryWrapper);
         System.out.println("userList:" + userList);
         Integer result = userMapper.selectCount(queryWrapper);
         System.out.println("result:" + result);
     }

三、LambdaQueryChainWrapper

 //鏈?zhǔn)讲樵兎绞?/span>
 User one = new LambdaQueryChainWrapper<>(userMapper)
                   .eq(User::getName, "liangd1")
                   .one();
  @Test
      void TestLambdaQueryChainWrapper() {
          //1、eq查詢單條
          User one = new LambdaQueryChainWrapper<>(userMapper)
                  .eq(User::getName, "liangd1")
                  .one();
          System.out.println("UserOne:" + one);
  
          //2、查詢list
          List<User> users = new LambdaQueryChainWrapper<>(userMapper)
                  .eq(User::getName, "zcx")
                  .list();
          System.out.println("UserList:" + users);
  
          //3、模糊查詢
          List<User> LikeList = new LambdaQueryChainWrapper<>(userMapper)
                  .like(User::getEmail, "test")
                  .list();
          System.out.println("LikeUser:" + LikeList);
      }

QueryWrapper及LambdaQueryWrapper

實(shí)體類

@Data
public class BannerItem {

    private Long id;

    private String name;

    private String img;

    private String keyword;

    private Integer type;

    private Long bannerId;
}

QueryWrapper

最基礎(chǔ)的使用方式是這樣

// 查詢條件構(gòu)造器
QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
wrapper.eq("banner_id", id);
// 查詢操作
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);

然后我們可以引入lambda,避免我們?cè)诖a中寫類似的于banner_id的硬編碼

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

LambdaQueryWrapper

為了簡(jiǎn)化lambda的使用,我們可以改寫成LambdaQueryWrapper構(gòu)造器,語(yǔ)法如下:

兩種寫法
new QueryWrapper().lambda();
Wrappers.lambdaQuery();

LambdaQueryWrapper<BannerItem> wrapper = new QueryWrapper<BannerItem>().lambda();
// LambdaQueryWrapper<BannerItem> wrapper = Wrappers.lambdaQuery(); // 兩種寫法

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

我們可以再次將QueryWrapper.lambda()簡(jiǎn)化,變成這個(gè)樣子

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

鏈?zhǔn)讲樵?/h3>

MyBatis-Plus還提供了一種鏈?zhǔn)讲樵兊姆绞?,和上面的代碼效果一樣。
但是這種寫法偏向于炫技,可讀性沒有上面的代碼強(qiáng),大家可以根據(jù)需要自行選擇方式。

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

如果只想查詢一條記錄,例如通過id查詢某條記錄的詳情,使用.one()即可,例如

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

lambdaQueryWrapper中常用方法

Mybatis-Plus之四種lambda方式LambdaQueryWrapper,QueryWrapper<實(shí)體>().lambda(),LambdaQueryChainWrapper<實(shí)體>文章來源地址http://www.zghlxwxcb.cn/news/detail-410226.html

到了這里,關(guān)于Mybatis-Plus之四種lambda方式LambdaQueryWrapper,QueryWrapper<實(shí)體>().lambda(),LambdaQueryChainWrapper<實(shí)體>的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(二)條件查詢QueryWrapper、聚合函數(shù)的使用、Lambda條件查詢

    Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(二)條件查詢QueryWrapper、聚合函數(shù)的使用、Lambda條件查詢

    學(xué)習(xí)視頻:【編程不良人】Mybatis-Plus整合SpringBoot實(shí)戰(zhàn)教程,提高的你開發(fā)效率,后端人員必備! 普通查詢 條件構(gòu)造器查詢 【重要】 AbstractWrapper ?是 MyBatis Plus 中的一個(gè)抽象類,用于構(gòu)建 SQL 查詢條件。定義了泛型? T 、 C ?和? Children 。其中, T ?表示實(shí)體類的類型, C ?表示查

    2024年02月04日
    瀏覽(26)
  • mybatis-plus分頁(yè)方式

    mybatis-plus分頁(yè)方式

    概述 MyBatisPlus中提供的(自帶的)分頁(yè)插件,非常簡(jiǎn)單,只需要簡(jiǎn)單的配置就可以實(shí)現(xiàn)分頁(yè)功能。 詳細(xì)步驟: 第一步::config.MybatisPlusConfig.java:配置類,配置mybatisplus的插件功能。 第二步:驗(yàn)證(測(cè)試): 官網(wǎng)介紹: IXxxService.java: XxxServiceImpl.java: XxxController.java 業(yè)務(wù)(

    2024年02月16日
    瀏覽(17)
  • mybatis-plus配置日志實(shí)現(xiàn)方式

    Mybatis-plus是一個(gè)基于Mybatis的強(qiáng)大框架,可以幫助開發(fā)者快速地開發(fā)高質(zhì)量的數(shù)據(jù)庫(kù)應(yīng)用程序。Mybatis-plus提供了許多配置項(xiàng),其中一個(gè)重要的配置項(xiàng)是log-impl。 log-impl配置項(xiàng)定義了Mybatis-plus的日志實(shí)現(xiàn)方式,有兩種可選的方式: SLF4J日志實(shí)現(xiàn) 如果你的項(xiàng)目已經(jīng)使用了SLF4J日志框

    2024年02月09日
    瀏覽(28)
  • 【Java系列】Mybatis-Plus 使用方式介紹

    【Java系列】Mybatis-Plus 使用方式介紹

    Mybatis-Plus 提供了多種方式來執(zhí)行 SQL,包括使用注解、XML 映射文件和 Lambda 表達(dá)式等。其中,使用 Lambda 表達(dá)式是 Mybatis-Plus 推薦的方式,因?yàn)樗又庇^和類型安全。 以下是一個(gè)使用 Lambda 表達(dá)式執(zhí)行 SQL 的示例,現(xiàn)在我們有一個(gè)名為? User ?的實(shí)體類,其中包含? id 、 name ?

    2024年02月07日
    瀏覽(25)
  • MyBatis-plus的批量插入方式對(duì)比分析

    ??【摘要】Mybatis批量插入一直是開發(fā)者重點(diǎn)關(guān)注的問題,本文列舉了Mybatis的五種插入方式進(jìn)行對(duì)比分析,驗(yàn)證了五種批量插入的方式的優(yōu)先級(jí)。 ??略。 1、編寫UserService服務(wù)類,測(cè)試一萬(wàn)條數(shù)據(jù)的耗時(shí)情況: 2、編寫UserMapper接口 3、編寫UserMapper.xml文件 4、進(jìn)行單元測(cè)試

    2024年02月07日
    瀏覽(24)
  • mybatis-plus update更新操作(三種方式)

    MyBatis-Plus (opens new window)(簡(jiǎn)稱 MP)是一個(gè) MyBatis (opens new window)的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生。 愿景 我們的愿景是成為 MyBatis 最好的搭檔,就像 魂斗羅 中的 1P、2P,基友搭配,效率翻倍。 方式一(UpdateWrapper 條件構(gòu)造器) 方

    2024年02月11日
    瀏覽(21)
  • Mybatis-Plus批量添加或修改數(shù)據(jù)的三種方式

    Mybatis-Plus批量添加或修改數(shù)據(jù)的三種方式

    提供的方法 是遍歷每一個(gè)元素,判斷主鍵是否存在,如果存在則做更新,不存在添加 先獲取表中所有的主鍵 ,然后 判斷是否已存在,存在更新,不存在添加 on duplicate key update 是Mysql特有的語(yǔ)法,如下圖所示,表中id 為主鍵 再插入id為1的數(shù)據(jù),則提示主鍵已存在 改成如下

    2024年02月06日
    瀏覽(20)
  • 【Java】Mybatis Plus LambdaQueryWrapper梳理

    為了更方便的實(shí)現(xiàn)動(dòng)態(tài) SQL,Mybatis Plus 在其基礎(chǔ)上擴(kuò)展了 LambdaQueryWrapper,LambdaQueryWrapper 提供了 更加簡(jiǎn)便的查詢語(yǔ)法 ,同時(shí)也 避免了 SQL 注入 的風(fēng)險(xiǎn)。 LambdaQueryWrapper 實(shí)現(xiàn)了 QueryWrapper 的全部功能,并提供了基于 Lambda 表達(dá)式的查詢方式,使得查詢語(yǔ)法更加優(yōu)雅。使用 LambdaQ

    2024年02月09日
    瀏覽(50)
  • No Spring環(huán)境Mybatis-Plus批量插入并返回主鍵的兩種方式

    No Spring環(huán)境Mybatis-Plus批量插入并返回主鍵的兩種方式

    批量插入,可以把Mybatis-Plus看作是Mybatis加強(qiáng)版;故Mybatis中的相關(guān)操作都可以在Mybatis-Plus中使用;在mysql數(shù)據(jù)庫(kù)中支持批量插入,所以只要配置useGeneratedKeys和keyProperty就可以批量插入并返回主鍵了。 下面是批量插入的Dao層接口 ? ?一注解方式: ? ? ?直接擼代碼: ? ? ?第二種: XML方

    2024年02月09日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包