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

基于SpringBoot整合SSMP案例(開啟日志與分頁查詢條件查詢功能實(shí)現(xiàn))

 更新時(shí)間:2023年11月14日 09:49:35   作者:一只呆小白  
這篇文章主要介紹了基于SpringBoot整合SSMP案例(開啟日志與分頁查詢條件查詢功能實(shí)現(xiàn)),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋參考下吧

開啟事務(wù)

導(dǎo)入Mybatis-Plus框架后,我們可以使用Mybatis-Plus自帶的事務(wù),只需要在配置文件中配置即可
使用配置方式開啟日志,設(shè)置日志輸出方式為標(biāo)準(zhǔn)輸出

mybatis-plus:
  global-config:
    db-config:
      table-prefix: tb_
      id-type: auto
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

只有最后一行有用

數(shù)據(jù)層開發(fā)-分頁功能

分頁操作需要設(shè)定分頁對(duì)象IPage,Page第一個(gè)參數(shù)當(dāng)前頁碼值,第二個(gè)是每一頁中條數(shù)

@Test
    void testPage(){
        IPage page = new Page(2,2);
        bookDao.selectPage(page,null);
        System.out.println(page.getRecords());
    }

IPage對(duì)象中封裝了分頁操作中的所有數(shù)據(jù)
     數(shù)據(jù)
     當(dāng)前頁碼值
     每頁數(shù)據(jù)總量
     最大頁碼值
     數(shù)據(jù)總量

這樣就直接實(shí)現(xiàn)分頁了嗎?
答案是否定的

分頁操作是在MyBatisPlus的常規(guī)操作基礎(chǔ)上增強(qiáng)得到,內(nèi)部是動(dòng)態(tài)的拼寫SQL語句,
因此需要增強(qiáng)對(duì)應(yīng)的功能,使用MyBatisPlus攔截器實(shí)現(xiàn)

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}

執(zhí)行測(cè)試代碼

@Test
    void testPage(){
        IPage page = new Page(1,2);
        bookDao.selectPage(page,null);
        System.out.println(page.getRecords());
    }

可以看出執(zhí)行了兩次查詢,第一次執(zhí)行的查詢獲取了總條數(shù),為下面的分頁做準(zhǔn)備

數(shù)據(jù)層開發(fā)-條件查詢功能

上面的分頁查詢中 bookDao.selectPage(page,null);
第二個(gè)參數(shù)賦成null,你可能好奇它的功能是什么,那里是用來放條件對(duì)象QueryWrapper的。

QueryWrapper解析
QueryWrapper 是 MyBatis-Plus 的一個(gè)核心功能,它是用來構(gòu)造 SQL 查詢語句的。MyBatis-Plus 是一款 MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。
QueryWrapper 主要提供了以下幾個(gè)功能:
鏈?zhǔn)秸{(diào)用: QueryWrapper 支持鏈?zhǔn)秸{(diào)用,使得代碼更加簡潔易讀。
條件構(gòu)造器: QueryWrapper 提供了豐富的條件構(gòu)造方法,如 eq (等于)、ne (不等于)、gt (大于)、ge (大于等于)、lt (小于)、le (小于等于) 等。
SQL函數(shù)支持: QueryWrapper 支持 SQL 函數(shù),比如 count、sum、avg 等。
子查詢支持: QueryWrapper 支持子查詢,可以在查詢條件中嵌套子查詢。
排序支持: QueryWrapper 支持 orderBy 方法進(jìn)行排序。

下面是一個(gè)事例

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "張三")
            .ne("age", 20)
            .like("email", "test")
            .orderByAsc("age");

等價(jià)于SQL語句

SELECT * FROM user WHERE name = '張三' AND age != 20 AND email LIKE '%test%' ORDER BY age ASC;

了解完基礎(chǔ)知識(shí)點(diǎn),下面是實(shí)際使用

@Test
    void testGetBy(){
        QueryWrapper<Book> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name","Spring");
        List list = bookDao.selectList(queryWrapper);
    }

執(zhí)行結(jié)果

缺點(diǎn):有的時(shí)候我們可能會(huì)打錯(cuò),比如將name打成了nmae,有沒有什么可以解決呢?有LambdaQueryWrapper。

LambdaQueryWrapper 是 MyBatis-Plus 提供的一個(gè)查詢條件構(gòu)造器,它是 QueryWrapper 的一個(gè)變種,主要使用 Java 8 的 Lambda 表達(dá)式語法。
LambdaQueryWrapper 提供了與 QueryWrapper 類似的功能,包括鏈?zhǔn)秸{(diào)用、條件構(gòu)造器、SQL函數(shù)支持、子查詢支持、排序支持等。
相比于 QueryWrapper,LambdaQueryWrapper 的主要優(yōu)點(diǎn)在于:
類型安全:LambdaQueryWrapper 使用了 Java 8 的 Lambda 表達(dá)式,使得其具有類型安全的特性。你可以在編譯時(shí)檢查到類型錯(cuò)誤,而 QueryWrapper 在編譯時(shí)無法檢查到類型錯(cuò)誤,只能在運(yùn)行時(shí)通過拋出異常來發(fā)現(xiàn)錯(cuò)誤。
代碼可讀性更強(qiáng):由于使用了 Lambda 表達(dá)式,LambdaQueryWrapper 的代碼可讀性更強(qiáng)。你可以直接看到正在操作的是哪個(gè)字段,而不需要通過字符串來指定字段名,這樣也避免了因?yàn)樽侄蚊磳戝e(cuò)誤導(dǎo)致的問題。

例如,我們可以使用 LambdaQueryWrapper 構(gòu)造如下的查詢語句:

LambdaQueryWrapper<User> lambdaQuery = new QueryWrapper<User>().lambda();
lambdaQuery.eq(User::getName, "張三")
           .ne(User::getAge, 20)
           .like(User::getEmail, "test")
           .orderByAsc(User::getAge);

等價(jià)于SQL語句

SELECT * FROM user WHERE name = '張三' AND age != 20 AND email LIKE '%test%' ORDER BY age ASC;

User::getName 表示字段名是 "name",其他的類推,這樣我們就不會(huì)因?yàn)橐驗(yàn)椴恍⌒亩鲥e(cuò)了。
實(shí)戰(zhàn)如下

@Test
    void testGetBy2(){
        LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(Book::getName,"Spring");
        List list = bookDao.selectList(queryWrapper);
    }

執(zhí)行結(jié)果如下

到此這篇關(guān)于基于SpringBoot的SSMP整合案例(開啟日志與分頁查詢條件查詢功能實(shí)現(xiàn))的文章就介紹到這了,更多相關(guān)SpringBoot整合SSMP內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的密碼加密方式

    Java中的密碼加密方式

    文章介紹了Java中使用MD5算法對(duì)密碼進(jìn)行加密的方法,以及如何通過加鹽和多重加密來提高密碼的安全性,MD5是一種不可逆的哈希算法,適合用于存儲(chǔ)密碼,因?yàn)槠漭敵龅恼L度固定,且不容易發(fā)生碰撞,此外,通過加鹽和多重加密,可以進(jìn)一步增加密碼的復(fù)雜性和安全性
    2025-01-01
  • Spring的FactoryBean<Object>接口示例代碼

    Spring的FactoryBean<Object>接口示例代碼

    FactoryBean是Spring框架中的一個(gè)接口,用于創(chuàng)建和管理Bean對(duì)象,它的作用是將Bean的創(chuàng)建過程交給FactoryBean實(shí)現(xiàn)類來完成,而不是直接由Spring容器來創(chuàng)建,本文給大家介紹Spring的FactoryBean<Object>接口,感興趣的朋友一起看看吧
    2023-11-11
  • Java多線程高并發(fā)中解決ArrayList與HashSet和HashMap不安全的方案

    Java多線程高并發(fā)中解決ArrayList與HashSet和HashMap不安全的方案

    ArrayList實(shí)現(xiàn)了可變大小的數(shù)組。它允許所有元素,包括null。ArrayList沒有同步,HashMap和Hashtable類似,不同之處在于HashMap是非同步的,并且允許null,關(guān)于HashSet有一件事應(yīng)該牢記,即就條目數(shù)和容量之和來講,迭代是線性的,接下來讓我們?cè)敿?xì)來了解吧
    2021-11-11
  • java自帶命令行工具jmap、jhat與jinfo的使用實(shí)例代碼詳解

    java自帶命令行工具jmap、jhat與jinfo的使用實(shí)例代碼詳解

    本篇文章主要通過代碼實(shí)例對(duì)java自帶命令行工具jmap、jhat與jinfo的使用做出了詳解,需要的朋友可以參考下
    2017-04-04
  • 詳解Spring中bean生命周期回調(diào)方法

    詳解Spring中bean生命周期回調(diào)方法

    本篇文章主要介紹了詳解Spring中bean生命周期回調(diào)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java 線程對(duì)比(Thread,Runnable,Callable)實(shí)例詳解

    Java 線程對(duì)比(Thread,Runnable,Callable)實(shí)例詳解

    這篇文章主要介紹了Java 線程(Thread,Runnable,Callable)實(shí)例詳解的相關(guān)資料,這里對(duì)java 線程的三種方法進(jìn)行了對(duì)比,需要的朋友可以參考下
    2016-12-12
  • 一些java二進(jìn)制的相關(guān)基礎(chǔ)知識(shí)

    一些java二進(jìn)制的相關(guān)基礎(chǔ)知識(shí)

    這篇文章主要介紹了一些java二進(jìn)制的相關(guān)基礎(chǔ)知識(shí),在Java語言中byte代表最小計(jì)量單位,byte由8位2進(jìn)制數(shù)組成。,需要的朋友可以參考下
    2019-06-06
  • 關(guān)于JDK源碼中的@author unascribed注釋閑談

    關(guān)于JDK源碼中的@author unascribed注釋閑談

    這篇文章主要介紹了關(guān)于JDK源碼中的@author unascribed注釋閑談,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java遞歸實(shí)現(xiàn)科赫雪花

    java遞歸實(shí)現(xiàn)科赫雪花

    這篇文章主要為大家詳細(xì)介紹了java遞歸實(shí)現(xiàn)科赫雪花,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Java冒泡排序法和選擇排序法的實(shí)現(xiàn)

    Java冒泡排序法和選擇排序法的實(shí)現(xiàn)

    這篇文章主要介紹了Java冒泡排序法和選擇排序法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論