最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis-Plus的條件構(gòu)造器QueryWrapper & UpdateWrapper示例詳解

 更新時(shí)間:2024年01月11日 10:22:05   作者:IT·陳寒  
Mybatis-Plus的條件構(gòu)造器QueryWrapper和UpdateWrapper為開發(fā)者提供了強(qiáng)大、靈活的條件構(gòu)建工具,能夠大大簡(jiǎn)化數(shù)據(jù)庫(kù)操作的代碼,通過(guò)本文的介紹,讀者可以更加深入地理解這兩個(gè)條件構(gòu)造器的使用方法,并在實(shí)際項(xiàng)目中靈活應(yīng)用,感興趣的朋友跟隨小編一起看看吧

1. 引言

在數(shù)據(jù)庫(kù)操作中,條件查詢和條件更新是非常常見(jiàn)的需求。為了簡(jiǎn)化代碼,Mybatis-Plus提供了強(qiáng)大的條件構(gòu)造器——QueryWrapperUpdateWrapper。本文將深入探討這兩個(gè)條件構(gòu)造器的使用方法,并通過(guò)示例代碼幫助讀者更好地理解和應(yīng)用。

2. Mybatis-Plus簡(jiǎn)介

Mybatis-Plus 是基于Mybatis的一個(gè)增強(qiáng)工具庫(kù),旨在簡(jiǎn)化開發(fā),提高效率。它提供了豐富的功能,包括代碼生成器、性能優(yōu)化、條件構(gòu)造器等。其中,條件構(gòu)造器是Mybatis-Plus中的一個(gè)核心功能,用于構(gòu)建靈活的查詢和更新條件。

在這里插入圖片描述

3. QueryWrapper

3.1 基本用法

QueryWrapper用于構(gòu)建查詢條件,可以通過(guò)鏈?zhǔn)秸{(diào)用的方式組裝各種查詢條件。

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
public class QueryWrapperExample {
    public static void main(String[] args) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        // 等值條件
        queryWrapper.eq("name", "John");
        // 不等值條件
        queryWrapper.ne("age", 25);
        // 大于條件
        queryWrapper.gt("create_time", "2022-01-01");
        // 小于等于條件
        queryWrapper.le("update_time", "2023-01-01");
        // 模糊查詢
        queryWrapper.like("email", "@gmail.com");
        // 排序
        queryWrapper.orderByAsc("age");
        // 使用Lambda表達(dá)式
        queryWrapper.lambda().eq(User::getName, "Alice");
        // 打印SQL語(yǔ)句
        System.out.println("SQL: " + queryWrapper.getSqlSelect());
    }
}

上述代碼演示了QueryWrapper的基本用法,通過(guò)不同的方法添加等值、不等值、范圍、模糊等查詢條件,同時(shí)支持Lambda表達(dá)式。

3.2 動(dòng)態(tài)條件拼接

在實(shí)際應(yīng)用中,我們經(jīng)常需要根據(jù)不同條件的存在與否來(lái)動(dòng)態(tài)構(gòu)建查詢條件。QueryWrapper提供了一系列的條件拼接方法,例如and、or、nested等。

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
public class DynamicQueryWrapperExample {
    public static void main(String[] args) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        // 動(dòng)態(tài)條件拼接
        queryWrapper.and(wrapper -> wrapper.eq("name", "John").ne("age", 25))
                    .or(wrapper -> wrapper.gt("create_time", "2022-01-01").le("update_time", "2023-01-01"));
        // 打印SQL語(yǔ)句
        System.out.println("SQL: " + queryWrapper.getSqlSelect());
    }
}

在上述代碼中,通過(guò)andor方法,我們可以根據(jù)需要?jiǎng)討B(tài)拼接查詢條件,使得代碼更加靈活。

3.3 Lambda表達(dá)式的高級(jí)用法

QueryWrapper支持Lambda表達(dá)式,可以進(jìn)一步簡(jiǎn)化代碼,提高可讀性。

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
public class LambdaQueryWrapperExample {
    public static void main(String[] args) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        // Lambda表達(dá)式
        queryWrapper.lambda().eq(User::getName, "John")
                             .ne(User::getAge, 25)
                             .like(User::getEmail, "@gmail.com");
        // 打印SQL語(yǔ)句
        System.out.println("SQL: " + queryWrapper.getSqlSelect());
    }
}

通過(guò)lambda方法,我們可以使用實(shí)體類的屬性名而不是字符串,使得代碼更加健壯和易維護(hù)。

4. UpdateWrapper

UpdateWrapper用于構(gòu)建更新條件,與QueryWrapper類似,也支持鏈?zhǔn)秸{(diào)用和Lambda表達(dá)式。

4.1 基本用法

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
public class UpdateWrapperExample {
    public static void main(String[] args)
 {
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        // 等值條件
        updateWrapper.eq("name", "John");
        // 不等值條件
        updateWrapper.ne("age", 25);
        // 大于條件
        updateWrapper.gt("create_time", "2022-01-01");
        // 小于等于條件
        updateWrapper.le("update_time", "2023-01-01");
        // 模糊查詢
        updateWrapper.like("email", "@gmail.com");
        // 使用Lambda表達(dá)式
        updateWrapper.lambda().set(User::getName, "Alice").eq(User::getAge, 30);
        // 打印SQL語(yǔ)句
        System.out.println("SQL: " + updateWrapper.getSqlSet());
    }
}

UpdateWrapper的基本用法與QueryWrapper類似,可以通過(guò)鏈?zhǔn)秸{(diào)用添加等值、不等值、范圍、模糊等更新條件。

4.2 動(dòng)態(tài)條件拼接

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
public class DynamicUpdateWrapperExample {
    public static void main(String[] args) {
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        // 動(dòng)態(tài)條件拼接
        updateWrapper.and(wrapper -> wrapper.eq("name", "John").ne("age", 25))
                      .or(wrapper -> wrapper.gt("create_time", "2022-01-01").le("update_time", "2023-01-01"));
        // 打印SQL語(yǔ)句
        System.out.println("SQL: " + updateWrapper.getSqlSet());
    }
}

通過(guò)andor方法,我們可以動(dòng)態(tài)拼接更新條件,更好地適應(yīng)各種業(yè)務(wù)場(chǎng)景。

4.3 Lambda表達(dá)式的高級(jí)用法

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
public class LambdaUpdateWrapperExample {
    public static void main(String[] args) {
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        // Lambda表達(dá)式
        updateWrapper.lambda().set(User::getName, "Alice")
                             .eq(User::getAge, 30)
                             .like(User::getEmail, "@gmail.com");
        // 打印SQL語(yǔ)句
        System.out.println("SQL: " + updateWrapper.getSqlSet());
    }
}

通過(guò)lambda方法,我們可以使用實(shí)體類的屬性名,使得代碼更加簡(jiǎn)潔和可讀。

5. 拓展功能與未來(lái)展望

5.1 動(dòng)態(tài)SQL的使用

QueryWrapperUpdateWrapper提供了豐富的條件構(gòu)造方法,但對(duì)于一些特定、復(fù)雜的業(yè)務(wù)場(chǎng)景,可能需要使用動(dòng)態(tài)SQL。Mybatis-Plus也支持動(dòng)態(tài)SQL的編寫,可以通過(guò)@SqlParser注解來(lái)實(shí)現(xiàn)。

@SqlParser(filter = true)
public interface UserMapper extends BaseMapper<User> {
    @Select("<script> SELECT * FROM user WHERE 1=1 "
            + "<if test=\"name != null\"> AND name = #{name} </if>"
            + "<if test=\"age != null\"> AND age = #{age} </if>"
            + "</script>")
    List<User> selectUsers(@Param("name") String name, @Param("age") Integer age);
}

5.2 自定義條件構(gòu)造器

在某些場(chǎng)景下,可能需要根據(jù)具體業(yè)務(wù)需求自定義條件構(gòu)造器。Mybatis-Plus提供了AbstractWrapper類,開發(fā)者可以繼承并實(shí)現(xiàn)自己的條件構(gòu)造器。

import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
public class CustomWrapper<T> extends AbstractWrapper<T, CustomWrapper<T>> {
    public CustomWrapper() {
        super();
    }
    // 自定義條件構(gòu)造方法
    public CustomWrapper<T> customCondition(String condition) {
        sql.WHERE(condition);
        return this;
    }
}

6. 總結(jié)

Mybatis-Plus的條件構(gòu)造器QueryWrapperUpdateWrapper為開發(fā)者提供了強(qiáng)大、靈活的條件構(gòu)建工具,能夠大大簡(jiǎn)化數(shù)據(jù)庫(kù)操作的代碼。通過(guò)本文的介紹,讀者可以更加深入地理解這兩個(gè)條件構(gòu)造器的使用方法,并在實(shí)際項(xiàng)目中靈活應(yīng)用。在未來(lái),隨著Mybatis-Plus的不斷更新和完善,我們可以期待更多更強(qiáng)大的功能和特性的加入。希望本文能夠幫助開發(fā)者更好地利用Mybatis-Plus進(jìn)行數(shù)據(jù)庫(kù)操作,提高開發(fā)效率。

到此這篇關(guān)于Mybatis-Plus的條件構(gòu)造器QueryWrapper &amp; UpdateWrapper詳解的文章就介紹到這了,更多相關(guān)Mybatis-Plus QueryWrapper &amp; UpdateWrapper內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringCloud之熔斷器Hystrix的實(shí)現(xiàn)

    SpringCloud之熔斷器Hystrix的實(shí)現(xiàn)

    這篇文章主要介紹了SpringCloud之熔斷器Hystrix的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 關(guān)于eclipse中運(yùn)行tomcat提示端口被占用的4種解決

    關(guān)于eclipse中運(yùn)行tomcat提示端口被占用的4種解決

    這篇文章主要介紹了關(guān)于eclipse中運(yùn)行tomcat提示端口被占用的4種解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • OKHttp3(支持Retrofit)的網(wǎng)絡(luò)數(shù)據(jù)緩存Interceptor攔截器的實(shí)現(xiàn)

    OKHttp3(支持Retrofit)的網(wǎng)絡(luò)數(shù)據(jù)緩存Interceptor攔截器的實(shí)現(xiàn)

    本篇文章主要介紹了OKHttp3(支持Retrofit)的網(wǎng)絡(luò)數(shù)據(jù)緩存Interceptor攔截器的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Mybatis?大數(shù)據(jù)量批量寫優(yōu)化的案例詳解

    Mybatis?大數(shù)據(jù)量批量寫優(yōu)化的案例詳解

    這篇文章主要介紹了Mybatis?大數(shù)據(jù)量批量寫優(yōu)化的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Java IO流 文件的編碼實(shí)例代碼

    Java IO流 文件的編碼實(shí)例代碼

    本文通過(guò)實(shí)例代碼給大家介紹了java io流文件編碼的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-05-05
  • Javadoc 具體使用詳解

    Javadoc 具體使用詳解

    這篇文章主要介紹了Javadoc 具體使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java實(shí)現(xiàn)一個(gè)桌球小游戲

    java實(shí)現(xiàn)一個(gè)桌球小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)一個(gè)桌球小游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Java實(shí)現(xiàn)ATM機(jī)操作系統(tǒng)

    Java實(shí)現(xiàn)ATM機(jī)操作系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)ATM機(jī)操作系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • mybatis配置mapper-locations位置的三種方式小結(jié)

    mybatis配置mapper-locations位置的三種方式小結(jié)

    這篇文章主要給大家介紹了關(guān)于mybatis配置mapper-locations位置的三種方式,Mybatis-Plus的初衷是為了簡(jiǎn)化開發(fā),而不建議開發(fā)者自己寫SQL語(yǔ)句的,但是有時(shí)客戶需求比較復(fù)雜,需要的朋友可以參考下
    2023-08-08
  • 淺析Spring容器原始Bean是如何創(chuàng)建的

    淺析Spring容器原始Bean是如何創(chuàng)建的

    這篇文章主要是想和小伙伴們一起聊聊?Spring?容器創(chuàng)建?Bean?最最核心的?createBeanInstance?方法,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-08-08

最新評(píng)論

阿拉善盟| 航空| 岑溪市| 咸宁市| 伊金霍洛旗| 普宁市| 武鸣县| 九龙县| 志丹县| 余庆县| 延长县| 黄平县| 甘肃省| 三台县| 武功县| 新兴县| 铅山县| 大邑县| 忻城县| 西安市| 古田县| 南宫市| 玉林市| 翁源县| 文昌市| 博客| 西宁市| 措勤县| 峨边| 赫章县| 阳谷县| 图木舒克市| 保山市| 漳州市| 仁怀市| 公主岭市| 彰武县| 长沙市| 昌宁县| 鄂托克前旗| 百色市|