亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

1. 引言

在數(shù)據(jù)庫(kù)操作中,條件查詢(xún)和條件更新是非常常見(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)化開(kāi)發(fā),提高效率。它提供了豐富的功能,包括代碼生成器、性能優(yōu)化、條件構(gòu)造器等。其中,條件構(gòu)造器是Mybatis-Plus中的一個(gè)核心功能,用于構(gòu)建靈活的查詢(xún)和更新條件。

在這里插入圖片描述

3. QueryWrapper

3.1 基本用法

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

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");
        // 模糊查詢(xún)
        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ò)不同的方法添加等值、不等值、范圍、模糊等查詢(xún)條件,同時(shí)支持Lambda表達(dá)式。

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

在實(shí)際應(yīng)用中,我們經(jīng)常需要根據(jù)不同條件的存在與否來(lái)動(dòng)態(tài)構(gòu)建查詢(xún)條件。QueryWrapper提供了一系列的條件拼接方法,例如andor、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)拼接查詢(xún)條件,使得代碼更加靈活。

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í)體類(lèi)的屬性名而不是字符串,使得代碼更加健壯和易維護(hù)。

4. UpdateWrapper

UpdateWrapper用于構(gòu)建更新條件,與QueryWrapper類(lèi)似,也支持鏈?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");
        // 模糊查詢(xún)
        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類(lèi)似,可以通過(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í)體類(lèi)的屬性名,使得代碼更加簡(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的編寫(xiě),可以通過(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類(lèi),開(kāi)發(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為開(kāi)發(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)大的功能和特性的加入。希望本文能夠幫助開(kāi)發(fā)者更好地利用Mybatis-Plus進(jìn)行數(shù)據(jù)庫(kù)操作,提高開(kāi)發(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)文章

最新評(píng)論