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

MyBatis-Plus中的更新操作方式(通過(guò)id更新和條件更新)

 更新時(shí)間:2026年04月23日 09:30:56   作者:心態(tài)還需努力呀  
本文主要介紹了MyBatis-Plus中實(shí)體對(duì)象的更新操作,包括通過(guò)id更新和條件更新兩種方式,詳細(xì)解釋了每種方式的方法使用、傳入?yún)?shù)以及生成的SQL語(yǔ)句,并給出測(cè)試代碼和運(yùn)行結(jié)果

一、通過(guò)id更新

1.查看mapper繼承的BaseMapper下通過(guò)id更新的方法updateById可看出參數(shù)傳入的是一個(gè)對(duì)象。并且返回的是一個(gè)int類(lèi)型的值, 該值的含義就是受影響的行數(shù)。

為0表示更新失敗,作為以后開(kāi)發(fā)中要處理的邏輯有用處。

如下圖所示:

2.編寫(xiě)測(cè)試類(lèi)testUpdateById方法,在方法中通過(guò)調(diào)用MP的updateById對(duì)數(shù)據(jù)庫(kù)表中的名字和郵箱進(jìn)行修改。

//測(cè)試通過(guò)id更新數(shù)據(jù)
@Test
public void testUpdateById(){
    User user=new User();
    user.setUserId(1);//更新id=?的數(shù)據(jù)
    //更新內(nèi)容,可多個(gè)
    user.setUserName("心態(tài)");
    user.setUserEmail("3052273528@qq.com");
    int result = userMapper.updateById(user);
    System.out.println(result);

}

3.運(yùn)行上面的方法得出結(jié)果,查看生成的sql語(yǔ)句:

如下圖所示,可看到sql語(yǔ)句把表中的user_id字段作為條件,對(duì)user表中的user_name、user_email字段的值進(jìn)行修改。

4.查詢(xún)修改結(jié)果調(diào)用通過(guò)id查詢(xún)的方法查詢(xún)user_id=1的表信息是否發(fā)生改變。

//測(cè)試通過(guò)id查詢(xún)
    @Test
    public void testSelectById(){
        User user = userMapper.selectById(1L);
        System.out.println(user);
    }

效果如下圖所示,可看到用戶名和郵箱已經(jīng)變?yōu)榱诵薷暮蟮闹?,修改成功!?/p>

二、條件更新

在做條件更新時(shí)我們要用到MP中的update方法,先來(lái)看下源碼:要傳入2個(gè)參數(shù),第一個(gè)是實(shí)體,就是要進(jìn)行修改的數(shù)據(jù)。

第二個(gè)傳入的是Wrapper是要進(jìn)行更新的條件。

int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

2.1 使用QueryWrapper進(jìn)行條件更新

我們先測(cè)試QueryWrapper對(duì)數(shù)據(jù)進(jìn)行條件更新:

在測(cè)試類(lèi)中編寫(xiě)testUpdateQw()方法,修改用戶狀態(tài)為1的用戶名改為(心態(tài)還需努力呀~)和郵箱改為(2132444@qq.com)。

我們把要更新的數(shù)據(jù)放到User類(lèi)里,條件就需要用到QueryWrapper,首先需要new出來(lái),然后用.eq調(diào)用方法,eq方法里也有兩個(gè)參數(shù),第一個(gè)是表字段名,第二個(gè)是該字段的值。

如下圖所示:

然后即可寫(xiě)出該方法的內(nèi)容:

//根據(jù)條件更新QueryWrapper用法
    @Test
    public void testUpdateQw(){
        User user=new User();
        user.setUserName("心態(tài)還需努力呀~");
        user.setUserEmail("2132444@qq.com");
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        wrapper.eq("user_status","1");
        int result= userMapper.update(user, wrapper);
        System.out.println("result=> "+result);
    }

查看運(yùn)行結(jié)果,通過(guò)生成的sql代碼,可看出和我們編寫(xiě)的代碼一樣,條件是user_status字段,要修改的字段是user_name、user_email值。

注:再次強(qiáng)調(diào)eq方法中的第一個(gè)參數(shù)是數(shù)據(jù)庫(kù)表的字段,而不是屬性名。

2.2 使用UpdateWrapper進(jìn)行條件更新

這次我們測(cè)試UpdateWrapper對(duì)數(shù)據(jù)進(jìn)行條件更新:

在測(cè)試類(lèi)中編寫(xiě)testUpdateUw()方法,修改用戶狀態(tài)為1的用戶名改為(心態(tài))和郵箱改為(8888888@qq.com)。

要修改的數(shù)據(jù)和條件都要放到UpdateWrapper,首先需要new出來(lái),然后用.set調(diào)用方法,set方法里也有兩個(gè)參數(shù),第一個(gè)是表字段名,第二個(gè)是該字段的值。如下圖所示:

但在寫(xiě)update參數(shù)時(shí),因User設(shè)置值的功能被UpdateWrapper實(shí)現(xiàn)了,所以第一個(gè)參數(shù)為null即可,代碼如下:

//根據(jù)條件更新UpdateWrapper用法
    @Test
    public void testUpdateUw(){
        UpdateWrapper<User> wrapper=new UpdateWrapper<>();
        wrapper.set("user_name","心態(tài)").set("user_email","8888888@qq.com")//更新的數(shù)據(jù)
                .eq("user_status","1");//更新的條件
        int result= userMapper.update(null, wrapper);
        System.out.println("result=> "+result);
    }

運(yùn)行效果圖,可看到和上面方法生成的sql語(yǔ)句是一樣的,也能進(jìn)行更新操作:

注:強(qiáng)調(diào)eq方法中的第一個(gè)參數(shù)是數(shù)據(jù)庫(kù)表的字段,而不是屬性名。 UpdateWrapper中的set方法也是一樣的。

總結(jié)

更新操作也是我們?cè)趯?shí)際寫(xiě)代碼中必不可少的,掌握MP的更新操作,不管是通過(guò)id更新還是條件更新中的QueryWrapper、UpdateWrapper來(lái)更新。學(xué)會(huì)的話會(huì)很方便以后的開(kāi)發(fā),節(jié)省大量的時(shí)間。

雖說(shuō)條件更新中這兩個(gè)方法實(shí)現(xiàn)的結(jié)果一樣,但最好都掌握,都了解每個(gè)方法的用法。

在實(shí)際編寫(xiě)項(xiàng)目時(shí)習(xí)慣用哪個(gè)看個(gè)人。這也是更新操作的全部?jī)?nèi)容。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 劍指Offer之Java算法習(xí)題精講N叉樹(shù)的遍歷及數(shù)組與字符串

    劍指Offer之Java算法習(xí)題精講N叉樹(shù)的遍歷及數(shù)組與字符串

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • SpringBoot3.1.2 引入Swagger報(bào)錯(cuò)Type javax.servlet.http.HttpServletRequest not present解決辦法

    SpringBoot3.1.2 引入Swagger報(bào)錯(cuò)Type javax.servlet.http

    這篇文章主要介紹了SpringBoot3.1.2 引入Swagger報(bào)錯(cuò)Type javax.servlet.http.HttpServletRequest not present解決辦法,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Spring Boot身份認(rèn)證狀態(tài)的存儲(chǔ)與傳遞實(shí)現(xiàn)方案

    Spring Boot身份認(rèn)證狀態(tài)的存儲(chǔ)與傳遞實(shí)現(xiàn)方案

    本文主要內(nèi)容介紹了在SpringBoot中實(shí)現(xiàn)用戶登錄信息獲取的三種主流方案:基于Session+Cookie、基于JWTToken和基于OAuth2.0/OIDC,并詳細(xì)介紹了每種方案的核心邏輯、代碼實(shí)現(xiàn)、優(yōu)缺點(diǎn)及關(guān)鍵注意點(diǎn),感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • Java中通過(guò)三級(jí)緩存解決Spring循環(huán)依賴(lài)詳解

    Java中通過(guò)三級(jí)緩存解決Spring循環(huán)依賴(lài)詳解

    這篇文章主要介紹了Java中通過(guò)三級(jí)緩存解決Spring循環(huán)依賴(lài)詳解,當(dāng)出現(xiàn)兩個(gè)或多個(gè) Bean 在初始化時(shí)相互依賴(lài)的情況時(shí),Spring Boot 會(huì)將其中一個(gè) Bean 提前暴露出來(lái),以便其他 Bean 能夠在初始化時(shí)正確地引用它,這一策略能有效避免循環(huán)依賴(lài)導(dǎo)致的問(wèn)題,需要的朋友可以參考下
    2023-09-09
  • Idea+maven搭建SSH(struts2+hibernate5+spring5)環(huán)境的方法步驟

    Idea+maven搭建SSH(struts2+hibernate5+spring5)環(huán)境的方法步驟

    這篇文章主要介紹了Idea+maven搭建SSH(struts2+hibernate5+spring5)環(huán)境的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Windows下Dubbo+Zookeeper實(shí)現(xiàn)分布式部署教程

    Windows下Dubbo+Zookeeper實(shí)現(xiàn)分布式部署教程

    本文介紹了如何使用Dubbo和Zookeeper搭建分布式服務(wù),包括環(huán)境準(zhǔn)備、項(xiàng)目結(jié)構(gòu)、依賴(lài)引入、接口與服務(wù)實(shí)現(xiàn)、注解配置及服務(wù)調(diào)用流程,適合初學(xué)者參考和實(shí)踐
    2025-10-10
  • Java多線程之火車(chē)售票系統(tǒng)

    Java多線程之火車(chē)售票系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java多線程之火車(chē)售票系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 深入理解Java設(shè)計(jì)模式之迭代器模式

    深入理解Java設(shè)計(jì)模式之迭代器模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之迭代器模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式

    java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式

    Java WebSocket是一種基于TCP協(xié)議的雙向全雙工消息傳輸技術(shù),它允許服務(wù)器和客戶端之間實(shí)時(shí)通信,具有低延遲和高效率的特點(diǎn),下面這篇文章主要給大家介紹了關(guān)于java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式,需要的朋友可以參考下
    2024-08-08
  • SpringBoot全局異常捕獲處理實(shí)現(xiàn)方案

    SpringBoot全局異常捕獲處理實(shí)現(xiàn)方案

    這篇文章主要詳細(xì)介紹了SpringBoot全局異常捕獲處理實(shí)現(xiàn)方案,文章通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

兰考县| 阿鲁科尔沁旗| 剑河县| 册亨县| 宿松县| 天全县| 永仁县| 安龙县| 万州区| 子长县| 乌苏市| 阿拉尔市| 土默特左旗| 十堰市| 毕节市| 中方县| 广德县| 宣城市| 北川| 贵南县| 宁陕县| 阿坝县| 盐亭县| 林口县| 台南市| 德昌县| 宁远县| 东海县| 盐亭县| 本溪市| 乡城县| 隆尧县| 双流县| 佛教| 阆中市| 濉溪县| 互助| 阳山县| 灵武市| 鱼台县| 堆龙德庆县|