欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis-plus實現四種lambda表達式方式

 更新時間:2024年06月23日 11:18:13   作者:掌握月  
使用了lambda表達式 可以通過方法引用的方式來使用實體字段名的操作,本文主要介紹了mybatis-plus實現四種lambda表達式方式,具有一定的參考價值,感興趣的可以了解一下

前言

使用了lambda表達式 可以通過方法引用的方式來使用實體字段名的操作,避免直接寫數據庫表字段名時的錯寫名字;

一、LambdaQueryWrapper<>

http://www.dbjr.com.cn/program/30498424p.htm

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

 /**
  * 名字為王姓并且(年齡小于40并且郵箱不為空)
  * name like '王%' and (age <40 or email in not null)
  * 生成的sql語句 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.<實體>lambdaQuery()

/**
     * lambda 條件構造器
     * 生成的sql語句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ?
     */
    @Test
    public void selectLambda() {
        //創(chuàng)建lambda 條件構造器 的三種方法
//        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);


    }
/**
 * 名字為王姓并且(年齡小于40并且郵箱不為空)
 * name like '王%' and (age <40 or email in not null)
 * 生成的sql語句 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);


}
/**
 * 自定義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);


}

xml方式自定義sql 這里只是個單表演示application.yml 添加

mybatis-plus:  mapper-locations:    - com/mp/mapper/*

UserMapper 接口 添加方法

List<User> selectAll(@Param(Constants.WRAPPER) Wrapper<User> wrapper);IPage<User> selectUserPage(Page<User> page,@Param(Constants.WRAPPER)Wrapper<User> wrapper);

UserMpper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mp.dao.UserMapper">
    <select id="selectAll" resultType="com.mp.entity.User">
        select * from user ${ew.customSqlSegment}
    </select>

    <select id="selectUserPage" resultType="com.mp.entity.User">
        select * from user ${ew.customSqlSegment}
    </select>
</mapper>

四、LambdaQueryChainWrapper<實體>(xxxxMapper)

/**
 * lambda 條件構造器第四種創(chuàng)建方式 MP 3.0.7 新增的方式
 * 生成的sql語句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age >= ?
 * 這個例子可以看出  代碼更簡潔了
 * 生成的sql語句 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);
}

五、lambda在分頁中的應用

MP的分頁操作

baseMapper接口提供兩種分頁方法來實現物理分頁(注:導包時導MP的包)第一個返回實體對象 允許null 第二個人返回map 對象多用于在指定放回字段時使用,避免為指定字段null值出現

IPage<T> selectPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper);
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper);

使用MP的分頁需要配置 類

package com.mp.configuration;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {


    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
/**
 * 分頁MP 分頁插件 
 */
@Test
public void selectPage() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
    queryWrapper.ge("age", 26);
    //后面參數false  表示不查詢總記錄數
    Page<User> userPage = new Page<>(1, 2, false);
  /*  IPage<User> iPage = userMapper.selectPage(userPage, queryWrapper);
    System.out.println("總頁數"+iPage.getPages());
    System.out.println("總記錄數"+iPage.getTotal());
    List<User> records = iPage.getRecords();
    records.forEach(System.out::println);
    */
    IPage<Map<String, Object>> iPage = userMapper.selectMapsPage(userPage, queryWrapper);
    System.out.println("總頁數" + iPage.getPages());
    System.out.println("總記錄數" + iPage.getTotal());
    List<Map<String, Object>> records = iPage.getRecords();

    records.forEach(System.out::println);

}

自定義分頁

UserMapper接口

IPage<User> selectUserPage(Page<User> page,@Param(Constants.WRAPPER)Wrapper<User> wrapper);

UserMpper.xml 添加

<select id="selectUserPage" resultType="com.mp.entity.User">
    select * from user ${ew.customSqlSegment}
</select>
/**
 * 自定義分頁方法
 */
@Test
public void selectMyPage() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
    queryWrapper.ge("age", 26);
    //后面參數false  表示不查詢總記錄數
    Page<User> page = new Page<>(1, 2);

    IPage<User> iPage = userMapper.selectUserPage(page, queryWrapper);
    System.out.println("總頁數" + iPage.getPages());
    System.out.println("總記錄數" + iPage.getTotal());
    List<User> records = iPage.getRecords();
    records.forEach(System.out::println);
}

到此這篇關于mybatis-plus實現四種lambda表達式方式的文章就介紹到這了,更多相關mybatisplus lambda表達式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • Java靜態(tài)方法不能調用非靜態(tài)成員的原因分析

    Java靜態(tài)方法不能調用非靜態(tài)成員的原因分析

    在Java中,靜態(tài)方法是屬于類的方法,而不是屬于對象的方法,它可以通過類名直接調用,無需創(chuàng)建對象實例,非靜態(tài)成員指的是類的實例變量和實例方法,它們需要通過對象實例才能訪問和調用,本文小編將和大家一起探討Java靜態(tài)方法為什么不能調用非靜態(tài)成員
    2023-10-10
  • Java如何設置PDF文檔背景色詳解

    Java如何設置PDF文檔背景色詳解

    這篇文章主要介紹了Java如何設置PDF文檔背景色詳解,一般生成的PDF文檔默認的文檔底色為白色,我們可以通過一定方法來更改文檔的背景色,以達到文檔美化以及保護雙眼的作用。 以下內容提供了Java編程來設置PDF背景色的方法,需要的朋友可以參考下
    2019-07-07
  • Java實現Word/Pdf/TXT轉html的示例

    Java實現Word/Pdf/TXT轉html的示例

    這篇文章主要介紹了Java實現Word/Pdf/TXT轉html的示例,幫助大家方便的進行文件格式轉換,完成需求,感興趣的朋友可以了解下
    2020-11-11
  • SpringCloud @FeignClient注入Spring容器原理分析

    SpringCloud @FeignClient注入Spring容器原理分析

    本文詳細分析了Spring Boot中@FeignClient注解的掃描和注入過程,重點探討了@EnableFeignClients注解的工作原理,通過源碼分析,揭示了@EnableFeignClients如何通過@Import注解和FeignClientsRegistrar類實現bean定義的加載
    2024-12-12
  • 將Java項目提交到云服務器的流程步驟

    將Java項目提交到云服務器的流程步驟

    所謂將項目提交到云服務器即將你的項目打成一個 jar 包然后提交到云服務器即可,因此我們需要準備服務器環(huán)境為:Linux + JDK + MariDB(MySQL)+ Git + Maven,文中通過圖文講解的非常詳細,需要的朋友可以參考下
    2025-04-04
  • 詳解如何在Java中創(chuàng)建Excel迷你圖

    詳解如何在Java中創(chuàng)建Excel迷你圖

    迷你圖是一種簡潔而有效的數據可視化方式,常用于展示趨勢和變化,通常被用于數據儀表盤、報告和展示中,以便在有限的空間內展示多個數據集的趨勢,今天小編為大家介紹如何在Java中創(chuàng)建Excel迷你圖,需要的朋友可以參考下
    2023-10-10
  • dubbo新手學習之事件通知實踐教程

    dubbo新手學習之事件通知實踐教程

    這篇文章主要給大家介紹了關于dubbo新手學習之事件通知實踐的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • JAVA找不到符號的三種解決方案

    JAVA找不到符號的三種解決方案

    這篇文章主要給大家介紹了關于JAVA找不到符號的三種解決方案, 找不到符號錯誤主要發(fā)生在我們試圖引用一個未在我們正在編譯的程序中聲明的變量時,這意味著編譯器不知道我們所引用的Java變量,需要的朋友可以參考下
    2024-03-03
  • 新手初學Java對象內存構成

    新手初學Java對象內存構成

    這篇文章主要介紹了深入理解JVM之Java對象的創(chuàng)建、內存布局、訪問定位,結合實例形式詳細分析了Java對象的創(chuàng)建、內存布局、訪問定位相關概念、原理、操作技巧與注意事項,需要的朋友可以參考下
    2021-07-07
  • TransactionSynchronization的invokeAfterCompletion事務源碼解析

    TransactionSynchronization的invokeAfterCompletion事務源碼解析

    這篇文章主要為大家介紹了TransactionSynchronization的invokeAfterCompletion事務源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09

最新評論