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

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

 更新時(shí)間:2025年03月13日 11:30:10   作者:ChrisitineTX  
文章詳細(xì)分析了MybatisPlus在處理查詢條件時(shí),空字符串和NULL值的問題,MP 3.3.0及以上版本提供了多種解決方法,包括在Bean屬性上使用注解、全局配置等,推薦使用全局配置的方式來(lái)解決這個(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í)行語(yǔ)句

支持非空字段判斷拼接

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)致查詢出問題。尤其常見于,在前端頁(yè)面輸入該字段的查詢條件后,又清空輸入的關(guān)鍵字。

老規(guī)矩,先說(shuō)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語(yǔ)句),如下:

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)配置介紹頁(yè)面。需要注意的是,在yml配置文件中的配置,不是像官網(wǎng)上的駝峰命名方法。

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

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

相關(guān)文章

  • Java源碼解析LinkedList

    Java源碼解析LinkedList

    今天小編就為大家分享一篇關(guān)于Java源碼解析LinkedList,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • 基于mybatis中test條件中單引號(hào)雙引號(hào)的問題

    基于mybatis中test條件中單引號(hào)雙引號(hào)的問題

    這篇文章主要介紹了基于mybatis中test條件中單引號(hào)雙引號(hào)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 基于java中cookie和session的比較

    基于java中cookie和session的比較

    下面小編就為大家?guī)?lái)一篇基于java中cookie和session的比較。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2016-08-08
  • SpringBoot后端數(shù)據(jù)校驗(yàn)實(shí)戰(zhàn)操作指南

    SpringBoot后端數(shù)據(jù)校驗(yàn)實(shí)戰(zhàn)操作指南

    在項(xiàng)?開發(fā)中,對(duì)于前端提交的表單,后臺(tái)接?接收到表單數(shù)據(jù)后,為了保證程序的嚴(yán)謹(jǐn)性,通常后端會(huì)加?業(yè)務(wù)參數(shù)的合法校驗(yàn)操作來(lái)避免程序的?技術(shù)性?bug,這篇文章主要給大家介紹了關(guān)于SpringBoot后端數(shù)據(jù)校驗(yàn)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Java調(diào)整圖片大小的3種方式小結(jié)

    Java調(diào)整圖片大小的3種方式小結(jié)

    在軟件開發(fā)中處理圖像是一個(gè)常見任務(wù),特別是當(dāng)我們需要優(yōu)化圖像尺寸以適應(yīng)不同的應(yīng)用場(chǎng)景時(shí),這篇文章主要介紹了Java調(diào)整圖片大小的3種方式,需要的朋友可以參考下
    2024-09-09
  • SpringMVC MethodArgumentResolver的作用與實(shí)現(xiàn)

    SpringMVC MethodArgumentResolver的作用與實(shí)現(xiàn)

    這篇文章主要介紹了SpringMVC MethodArgumentResolver的作用與實(shí)現(xiàn),MethodArgumentResolver采用一種策略模式,在Handler的方法被調(diào)用前,Spring MVC會(huì)自動(dòng)將HTTP請(qǐng)求中的參數(shù)轉(zhuǎn)換成方法參數(shù)
    2023-04-04
  • Spring?Boot?中starter的原理詳析

    Spring?Boot?中starter的原理詳析

    這篇文章主要介紹了Spring?Boot?中starter原理詳析,文章圍繞主題展開springboot的插件機(jī)制和starter原理相關(guān)資料,需要的小伙伴可以參考一下
    2022-06-06
  • mybatis插入數(shù)據(jù)后返回自增主鍵ID的兩種實(shí)現(xiàn)方式

    mybatis插入數(shù)據(jù)后返回自增主鍵ID的兩種實(shí)現(xiàn)方式

    這篇文章主要介紹了mybatis插入數(shù)據(jù)后返回自增主鍵ID的兩種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 詳解Java的Struts框架以及相關(guān)的MVC設(shè)計(jì)理念

    詳解Java的Struts框架以及相關(guān)的MVC設(shè)計(jì)理念

    這篇文章主要介紹了詳解Java的Struts框架以及相關(guān)的MVC設(shè)計(jì)理念,Struts是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • 基于Java語(yǔ)言的遞歸運(yùn)算例題詳解

    基于Java語(yǔ)言的遞歸運(yùn)算例題詳解

    一個(gè)方法在執(zhí)行過程中調(diào)用自身, 就稱為 "遞歸"。本文將通過幾個(gè)例題帶大家深入了解一下Java語(yǔ)言中的遞歸運(yùn)算,感興趣的可以了解一下
    2022-08-08

最新評(píng)論