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

mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式

 更新時間:2022年03月22日 14:20:24   作者:程序猿吉良吉影  
這篇文章主要介紹了mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Wrapper條件構(gòu)造器updateForSet更新

官方文檔:https://baomidou.gitee.io/mybatis-plus-doc/#/wrapper

實體包裝器,用于處理 sql 拼接,排序,實體參數(shù)查詢等!

補充說明: 使用的是數(shù)據(jù)庫字段,不是Java屬性!

實體包裝器 EntityWrapper 繼承 Wrapper

簡單示例

翻頁查詢

public Page<T> selectPage(Page<T> page, EntityWrapper<T> entityWrapper) {
? if (null != entityWrapper) {
? ? ? entityWrapper.orderBy(page.getOrderByField(), page.isAsc());
? }
? page.setRecords(baseMapper.selectPage(page, entityWrapper));
? return page;
}

拼接sql方式 一

@Test
public void testTSQL11() {
? ? /*
? ? ?* 實體帶查詢使用方法 ?輸出看結(jié)果
? ? ?*/
? ? EntityWrapper<User> ew = new EntityWrapper<User>();
? ? ew.setEntity(new User(1));
? ? ew.where("user_name={0}", "'zhangsan'").and("id=1")
? ? ? ? ? ? .orNew("user_status={0}", "0").or("status=1")
? ? ? ? ? ? .notLike("user_nickname", "notvalue")
? ? ? ? ? ? .andNew("new=xx").like("hhh", "ddd")
? ? ? ? ? ? .andNew("pwd=11").isNotNull("n1,n2").isNull("n3")
? ? ? ? ? ? .groupBy("x1").groupBy("x2,x3")
? ? ? ? ? ? .having("x1=11").having("x3=433")
? ? ? ? ? ? .orderBy("dd").orderBy("d1,d2");
? ? System.out.println(ew.getSqlSegment());
}

括號拼接

.isNull("removor").andNew("idCard="+ idCard+" or phone="+ phone)

sql 

(removor IS NULL) AND (idCard=666 or phone=15866958266)?

拼接sql方式二

int buyCount = selectCount(Condition.create()
? ? ? ? ? ? ? ? .setSqlSelect("sum(quantity)")
? ? ? ? ? ? ? ? .isNull("order_id")
? ? ? ? ? ? ? ? .eq("user_id", 1)
? ? ? ? ? ? ? ? .eq("type", 1)
? ? ? ? ? ? ? ? .in("status", new Integer[]{0, 1})
? ? ? ? ? ? ? ? .eq("product_id", 1)
? ? ? ? ? ? ? ? .between("created_time", startDate, currentDate)
? ? ? ? ? ? ? ? .eq("weal", 1));

更新:updateForSet根據(jù)條件更新字段

.updateForSet("hits=hits+1", new EntityWrapper<T>().eq("id", id));

自定義SQL方法如何使用 Wrapper

mapper java接口方法

List<User> selectMyPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);

mapper xml定義

<select id="selectMyPage" resultType="User">
? SELECT * FROM user?
? <where>
? ${ew.sqlSegment}
? </where>
</select>

關(guān)于${ew.sqlSegment} 使用了 $ 不要誤以為就會被 sql 注入,請放心使用 mp 內(nèi)部對 wrapper 進行了字符轉(zhuǎn)義處理!

條件參數(shù)說明

查詢方式說明
setSqlSelect設(shè)置 SELECT 查詢字段
whereWHERE 語句,拼接 + WHERE 條件
andAND 語句,拼接 + AND 字段=值
andNewAND 語句,拼接 + AND (字段=值)
orOR 語句,拼接 + OR 字段=值
orNewOR 語句,拼接 + OR (字段=值)
eq等于=
allEq基于 map 內(nèi)容等于=
ne不等于<>
gt大于>
ge大于等于>=
lt小于<
le小于等于<=
like模糊查詢 LIKE
notLike模糊查詢 NOT LIKE
inIN 查詢
notInNOT IN 查詢
isNullNULL 值查詢
isNotNullIS NOT NULL
groupBy分組 GROUP BY
havingHAVING 關(guān)鍵詞
orderBy排序 ORDER BY
orderAscASC 排序 ORDER BY
orderDescDESC 排序 ORDER BY
existsEXISTS 條件語句
notExistsNOT EXISTS 條件語句
betweenBETWEEN 條件語句
notBetweenNOT BETWEEN 條件語句
addFilter自由拼接 SQL
last拼接在最后,例如:last("LIMIT 1")

注意! xxNew 都是另起 ( ... ) 括號包裹。

mybatis-plus中update更新使用注意事項

update(pojo,Wrapper)方法

封裝一個對象mcTemplate,使用update(pojo,Wrapper) ,該方法僅僅修改mcTemplate中不為空的字段,別的字段不更新,在數(shù)據(jù)庫中保持不變,如下:

mcTemplate.setStatus(TemplateStatusEnum.PASSED.getStatus());//待更新的字段
LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper();
lambdaUpdateWrapper.eq(McTemplate::getId,mcTemplate.getId() ); //限定條件
Integer result = mcTemplateMapper.update(mcTemplate, lambdaUpdateWrapper); //更新mcTemplate中不為空的字段

更新的字段比較少

不想封裝成一個對象的時候,可以采取便捷方式,該方式同上只會更新設(shè)定的字段,對于其他字段不更新。

LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper();
lambdaUpdateWrapper.eq(McTemplate::getId,mcTemplate.getId() )
.set(McTemplate::getStatus,1); //更新的值
Integer result = mcTemplateMapper.update(null, lambdaUpdateWrapper);

updateById(mcTemplate)方法

該方法會將所有的字段都更新,在對象mcTemplate中沒有的字段,會字段賦值null

int result = mcTemplateMapper.updateById(mcTemplate);

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

相關(guān)文章

  • Java保留兩位小數(shù)的幾種寫法總結(jié)

    Java保留兩位小數(shù)的幾種寫法總結(jié)

    相信大家在平時做項目時,可能會有這樣的業(yè)務(wù)需求: 頁面或界面上展示的數(shù)據(jù)保留小數(shù)點后兩位。 那么這篇文章小編就和大家分享了利用Java保留兩位小數(shù)的幾種寫法,文章給出了詳細的示例代碼,對大家的學(xué)習(xí)和理解很有幫助,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)下吧。
    2016-11-11
  • 詳解Spring-bean的循環(huán)依賴以及解決方式

    詳解Spring-bean的循環(huán)依賴以及解決方式

    這篇文章主要介紹了詳解Spring-bean的循環(huán)依賴以及解決方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 淺談HBase在SpringBoot項目里的應(yīng)用(含HBaseUtil工具類)

    淺談HBase在SpringBoot項目里的應(yīng)用(含HBaseUtil工具類)

    這篇文章主要介紹了淺談HBase在SpringBoot項目里的應(yīng)用(含HBaseUtil工具類),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • java計算方差、標(biāo)準(zhǔn)差(均方差)實例代碼

    java計算方差、標(biāo)準(zhǔn)差(均方差)實例代碼

    在本篇文章里小編給大家分享了關(guān)于java計算方差、標(biāo)準(zhǔn)差(均方差)實例代碼以及相關(guān)知識點,需要的朋友們可以參考下。
    2019-08-08
  • 使用ServletInputStream在攔截器或過濾器中應(yīng)用后重寫

    使用ServletInputStream在攔截器或過濾器中應(yīng)用后重寫

    這篇文章主要介紹了使用ServletInputStream在攔截器或過濾器中應(yīng)用后重寫,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • IDEA2022版本創(chuàng)建maven?web項目的兩種方式詳解

    IDEA2022版本創(chuàng)建maven?web項目的兩種方式詳解

    創(chuàng)建maven?web項目有兩種方式,一種是使用骨架方式,一種是不使用骨架的方式,本文結(jié)合實例代碼給大家介紹了IDEA2022版本創(chuàng)建maven?web項目的兩種方式,需要的朋友可以參考下
    2023-02-02
  • java實現(xiàn)圖形化界面計算器

    java實現(xiàn)圖形化界面計算器

    這篇文章主要為大家詳細介紹了java實現(xiàn)圖形化界面計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • servlet重定向詳解(八)

    servlet重定向詳解(八)

    這篇文章主要為大家詳細介紹了servlet重定向的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • SpringBoot實現(xiàn)無限級評論回復(fù)的項目實踐

    SpringBoot實現(xiàn)無限級評論回復(fù)的項目實踐

    本文主要介紹了SpringBoot實現(xiàn)無限級評論回復(fù)的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 使用JSONObject.toJSONString 過濾掉值為空的key

    使用JSONObject.toJSONString 過濾掉值為空的key

    這篇文章主要介紹了使用JSONObject.toJSONString 過濾掉值為空的key,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論