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

MybatisPlus查詢條件空字符串和NULL問題背景分析

 更新時(shí)間:2025年03月13日 11:30:10   作者:ChrisitineTX  
文章詳細(xì)分析了MybatisPlus在處理查詢條件時(shí),空字符串和NULL值的問題,MP 3.3.0及以上版本提供了多種解決方法,包括在Bean屬性上使用注解、全局配置等,推薦使用全局配置的方式來解決這個(gè)問題,以避免在SQL查詢中出現(xiàn)不必要的空字符串條件,感興趣的朋友跟隨小編一起看看吧

MybatisPlus查詢條件空字符串和NULL問題背景分析

MP依賴版本

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus</artifactId>
        <version>3.3.1.tmp</version>
    </dependency>

問題背景

在使用MP實(shí)現(xiàn)條件查詢時(shí),如果入?yún)閚ull或者""時(shí),則MP還是會(huì)把其當(dāng)做條件去執(zhí)行如圖:

入?yún)ⅲ?/p>

MP官方文檔給出解決方案:https://mp.baomidou.com/config/#insertstrategy
個(gè)人建議增加全局配置:
mybatis-plus: global-config: db-config: select-strategy: not_empty

但是又出現(xiàn)一個(gè)新的問題,id為""時(shí),仍然不會(huì)被QueryWrapper屏蔽掉,還是會(huì)被當(dāng)做條件去查詢
入?yún)?/p>

執(zhí)行語句

支持非空字段判斷拼接

LambdaUpdateWrapper<Orders> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(!order.getState().sEmpty(),Orders::getState, orders.getState());

補(bǔ)充:MyBatis-Plus過濾查詢條件中的空字符串

MyBatis-Plus過濾查詢條件中的空字符串

        在使用MyBatis-Plus查詢時(shí),若封裝查詢條件的Bean中有屬性為空字符串,是不會(huì)被過濾掉的,結(jié)果就是執(zhí)行的SQL的where條件中出現(xiàn)某個(gè)字段="",導(dǎo)致查詢出問題。尤其常見于,在前端頁面輸入該字段的查詢條件后,又清空輸入的關(guān)鍵字。

老規(guī)矩,先說MyBatis-Plus版本:3.3.0

有2種思路:

在Bean中給字段通過注解,過濾查詢時(shí)的空字符串;

// value指代對(duì)應(yīng)的數(shù)據(jù)表的字段名稱,whereStrategy 指定查詢時(shí)的過濾策略
@TableField(value = "PATIENT_NAME", whereStrategy = FieldStrategy.NOT_EMPTY)
private String patientName;

查看源碼源碼得知,一共有5種字段策略(5種策略也可用于INSERT或UPDATE語句),如下:

package com.baomidou.mybatisplus.annotation;
/**
 * 字段策略枚舉類
 *
 * @author hubin
 * @since 2016-09-09
 */
public enum FieldStrategy {
    /**
     * 忽略判斷
     */
    IGNORED,
    /**
     * 非NULL判斷
     */
    NOT_NULL,
    /**
     * 非空判斷(只對(duì)字符串類型字段,其他類型字段依然為非NULL判斷)
     */
    NOT_EMPTY,
    /**
     * 默認(rèn)的,一般只用于注解里
     * <p>1. 在全局里代表 NOT_NULL</p>
     * <p>2. 在注解里代表 跟隨全局</p>
     */
    DEFAULT,
    /**
     * 不加入 SQL
     */
    NEVER
}

        2.在配置文件中,全局配置,以SpringBoot為例。(推薦)

mybatis-plus:
  global-config:
    db-config:
      select-strategy: not_empty

        更多配置可參考MyBatis-Plus官網(wǎng)配置介紹頁面。需要注意的是,在yml配置文件中的配置,不是像官網(wǎng)上的駝峰命名方法。

使用配置 | MyBatis-PlusMyBatis-Plus 官方文檔。

到此這篇關(guān)于MybatisPlus查詢條件空字符串和NULL問題背景分析的文章就介紹到這了,更多相關(guān)MybatisPlus查詢條件空字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Cloud Gateway入門解讀

    Spring Cloud Gateway入門解讀

    本篇文章主要介紹了Spring Cloud Gateway入門解讀,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 詳解Spring Data JPA動(dòng)態(tài)條件查詢的寫法

    詳解Spring Data JPA動(dòng)態(tài)條件查詢的寫法

    本篇文章主要介紹了Spring Data JPA動(dòng)態(tài)條件查詢的寫法 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 聊聊SpringBoot使用Nacos進(jìn)行服務(wù)注冊(cè)發(fā)現(xiàn)與配置管理問題

    聊聊SpringBoot使用Nacos進(jìn)行服務(wù)注冊(cè)發(fā)現(xiàn)與配置管理問題

    Nacos支持基于DNS和基于RPC的服務(wù)發(fā)現(xiàn)(可以作為springcloud的注冊(cè)中心)、動(dòng)態(tài)配置服務(wù)(可以做配置中心)、動(dòng)態(tài)?DNS?服務(wù)。本文重點(diǎn)給大家介紹SpringBoot使用Nacos進(jìn)行服務(wù)注冊(cè)發(fā)現(xiàn)與配置管理,感興趣的朋友一起看看吧
    2022-01-01
  • SpringBoot利用Redis實(shí)現(xiàn)防止訂單重復(fù)提交的解決方案

    SpringBoot利用Redis實(shí)現(xiàn)防止訂單重復(fù)提交的解決方案

    在涉及訂單操作的業(yè)務(wù)中,防止訂單重復(fù)提交是一個(gè)常見需求,用戶可能會(huì)因誤操作或網(wǎng)絡(luò)延遲而多次點(diǎn)擊提交訂單按鈕,導(dǎo)致訂單重復(fù)提交,所以本文給大家介紹了SpringBoot利用Redis實(shí)現(xiàn)防止訂單重復(fù)提交的解決方案,需要的朋友可以參考下
    2024-10-10
  • Spring之@DependsOn注解詳細(xì)解析

    Spring之@DependsOn注解詳細(xì)解析

    這篇文章主要介紹了Spring之@DependsOn注解詳細(xì)解析,@DependsOn注解是Spring中提供的一個(gè)指定Spring創(chuàng)建Bean的依賴順序的注解,需要的朋友可以參考下
    2024-01-01
  • Java中的內(nèi)存模型(JMM)和鎖機(jī)制詳解

    Java中的內(nèi)存模型(JMM)和鎖機(jī)制詳解

    這篇文章主要介紹了Java中的內(nèi)存模型(JMM)和鎖機(jī)制使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 解決Maven項(xiàng)目pom.xml導(dǎo)入了Junit包還是用不了@Test注解問題

    解決Maven項(xiàng)目pom.xml導(dǎo)入了Junit包還是用不了@Test注解問題

    在Maven項(xiàng)目中,如果在非test目錄下使用@Test注解,可能會(huì)因?yàn)閜om.xml中<scope>test</scope>的設(shè)置而無法使用,正確做法是將測(cè)試代碼放在src/test/java目錄下,或去除<scope>test</scope>限制,這樣可以確保Junit依賴正確加載并應(yīng)用于適當(dāng)?shù)拇a部分
    2024-10-10
  • Java線程通信詳解

    Java線程通信詳解

    本篇文章主要介紹了Java線程通信問題,線程通信用來保證線程協(xié)調(diào)運(yùn)行,有需要的朋友可以了解一下。
    2016-10-10
  • Java Socket編程實(shí)現(xiàn)群聊實(shí)踐案例

    Java Socket編程實(shí)現(xiàn)群聊實(shí)踐案例

    本文介紹了如何實(shí)現(xiàn)特定客戶端與特定客戶端之間的私聊和群聊功能,通過服務(wù)器端的多線程處理和客戶端的Socket連接,實(shí)現(xiàn)了消息的路由和轉(zhuǎn)發(fā),本文給大家介紹Java Socket編程實(shí)現(xiàn)群聊功能,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • java中的connection reset 異常處理分析

    java中的connection reset 異常處理分析

    本文主要介紹了java中的connection reset 異常處理分析的相關(guān)資料,具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-04-04

最新評(píng)論

长垣县| 秭归县| 临夏县| 务川| 招远市| 枣庄市| 岐山县| 梁河县| 响水县| 景德镇市| 简阳市| 泾川县| 赤水市| 文昌市| 旺苍县| 上栗县| 济宁市| 永嘉县| 靖宇县| 旬邑县| 监利县| 杨浦区| 静宁县| 嵊泗县| 徐州市| 盐亭县| 乐都县| 福州市| 从江县| 博白县| 特克斯县| 衡山县| 甘德县| 汕头市| 阿勒泰市| 肃北| 寻乌县| 桂林市| 东兰县| 年辖:市辖区| 万州区|