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

Mybatis?mysql模糊查詢方式(CONCAT多個字段)及bug

 更新時間:2022年01月21日 09:40:32   作者:男人要霸氣  
這篇文章主要介紹了Mybatis?mysql模糊查詢方式(CONCAT多個字段)及bug,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Mybatis mysql模糊查詢及bug

先看下如下xml

 SELECT
    t.id,
    t.mobile,
    t.account_name
  FROM
    t_account t
    WHERE
  	 1=1
    <if test="keyWord !=null and keyWord !=''">
        and CONCAT(t.id,t.mobile,t.account_name) like CONCAT('%',#{keyWord},'%')
    </if>

正常來說這樣寫沒問題的,但是如果你CONCAT的字段中有一個字段為null時,那這條數(shù)據(jù)將查詢不到,說白了,只要有一個字段為null,就查不到數(shù)據(jù)了。

先看下以下數(shù)據(jù)。 

在這里插入圖片描述

從上圖可以發(fā)現(xiàn),id為7的mobile為null的,接下來咱們測試下結(jié)果。

根據(jù)account_name模糊查詢:查詢柳巖是能查到數(shù)據(jù)的,如下圖

在這里插入圖片描述

查詢張三是查詢不到數(shù)據(jù)的,如下圖

在這里插入圖片描述

根據(jù)Id查id為7的也是查不到的,如下圖

在這里插入圖片描述

結(jié)論:CONCAT的字段中有任意一個字段為null時,那這條數(shù)據(jù)將查詢不到

解決方案:一

改成用or連接

 SELECT
    t.id,
    t.mobile,
    t.account_name
  FROM
    t_account t
    WHERE
  	 1=1
    <if test="keyWord !=null and keyWord !=''">
        and CONCAT(t.id) like CONCAT('%',#{keyWord},'%')
        or CONCAT(t.mobile) like CONCAT('%',#{keyWord},'%')
        or CONCAT(t.account_name) like CONCAT('%',#{keyWord},'%')
    </if>

看下運行結(jié)果:查到張三這條數(shù)據(jù)了

在這里插入圖片描述

解決方案:二

判null處理

 SELECT
    t.id,
    t.mobile,
    t.account_name
  FROM
    t_account t
    WHERE
  	 1=1
        and CONCAT( IFNULL(t.id,''),IFNULL(t.mobile,''),IFNULL(t.account_name,'') ) like CONCAT('%',#{keyWord},'%')

在這里插入圖片描述

mybatis多個字段如何模糊查詢一個值

使用oracle concat 函數(shù)拼接字符 再進行l(wèi)ike 操作

<if test="searchContent!=null and searchContent!=''">
CONCAT(CONCAT(CONCAT(CONCAT(venderDesc,purcher),demandOrg),contactInfo),materialDesc) like#{searchContent}
</if>

mybatis 多個字段如何模糊查詢一個值

注:venderDesc,purcher,demandOrg,contactInfo,materialDesc為表的字段,想要拼接哪個字段就拼哪個字段

有些作者說 CONCAT(venderDesc,purcherdemandOrg,demandOrg,contactInfo,materialDesc) 這樣也能實現(xiàn),但本人經(jīng)測試這個是不行的,會報參數(shù)錯誤,可能是跟數(shù)據(jù)庫的版本有關(guān)。

mybatis 多個字段如何模糊查詢一個值

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

相關(guān)文章

  • java 打印一字符串,并在main()方法內(nèi)調(diào)用它

    java 打印一字符串,并在main()方法內(nèi)調(diào)用它

    編寫一個方法(名字自定,但要符合Java編碼規(guī)范),方法內(nèi)打印一字符串,并在main()方法內(nèi)調(diào)用它。
    2017-02-02
  • Java設(shè)計模式之依賴倒轉(zhuǎn)原則精解

    Java設(shè)計模式之依賴倒轉(zhuǎn)原則精解

    設(shè)計模式(Design pattern)代表了最佳的實踐,通常被有經(jīng)驗的面向?qū)ο蟮能浖_發(fā)人員所采用。設(shè)計模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。本篇介紹設(shè)計模式七大原則之一的依賴倒轉(zhuǎn)原則
    2022-02-02
  • Java中的轉(zhuǎn)換流、壓縮流、序列化流、打印流及應(yīng)用場景

    Java中的轉(zhuǎn)換流、壓縮流、序列化流、打印流及應(yīng)用場景

    這篇文章主要介紹了Java中的轉(zhuǎn)換流、壓縮流、序列化流、打印流及應(yīng)用場景,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Java 實戰(zhàn)項目基于遺傳算法學(xué)校排課系統(tǒng)的實現(xiàn)流程

    Java 實戰(zhàn)項目基于遺傳算法學(xué)校排課系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+Maven+mybatis+Vue+Mysql實現(xiàn)一個基于遺傳算法的學(xué)校排課系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • 使用mtrace追蹤JVM堆外內(nèi)存泄露的方法

    使用mtrace追蹤JVM堆外內(nèi)存泄露的方法

    這篇文章主要給大家介紹了如何使用mtrace追蹤JVM堆外內(nèi)存泄露,文章通過代碼示例介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • idea 安裝 Mybatis 開發(fā)幫助插件 MyBatisCodeHelper-Pro 插件破解版的方法

    idea 安裝 Mybatis 開發(fā)幫助插件 MyBatisCodeHelper-Pro 插件破解版的方法

    MyBatisCodeHelper-Pro 插件可以幫助我們快速的開發(fā) mybatis,這篇文章給大家介紹idea 安裝 Mybatis 開發(fā)幫助插件 MyBatisCodeHelper-Pro 插件破解版的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2020-09-09
  • Java應(yīng)用CPU使用率過高排查方式

    Java應(yīng)用CPU使用率過高排查方式

    這篇文章主要介紹了Java應(yīng)用CPU使用率過高排查方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Maven中的dependencyManagement 實例詳解

    Maven中的dependencyManagement 實例詳解

    dependencyManagement的中文意思就是依賴關(guān)系管理,它就是為了能通更好統(tǒng)一管理項目的版本號和各種jar版本號,可以更加方便升級,解決包沖突問題,這篇文章主要介紹了Maven中的dependencyManagement 實例詳解,需要的朋友可以參考下
    2024-02-02
  • SpringBoot自定義啟動器Starter流程詳解

    SpringBoot自定義啟動器Starter流程詳解

    SpringBoot中的starter是一種非常重要的機制,能夠拋棄以前繁雜的配置,將其統(tǒng)一集成進starter,應(yīng)用者只需要在maven中引入starter依賴,SpringBoot就能自動掃描到要加載的信息并啟動相應(yīng)的默認配置。starter讓我們擺脫了各種依賴庫的處理,需要配置各種信息的困擾
    2022-11-11
  • Java靜態(tài)代理和動態(tài)代理詳解

    Java靜態(tài)代理和動態(tài)代理詳解

    這篇文章主要介紹了Java靜態(tài)代理和動態(tài)代理,本文通過代碼示例給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-11-11

最新評論

邢台县| 古蔺县| 旅游| 威海市| 从化市| 惠东县| 新乡市| 板桥市| 六枝特区| 饶平县| 盘锦市| 五台县| 英吉沙县| 井研县| 涿鹿县| 织金县| 漯河市| 任丘市| 枞阳县| 高州市| 五寨县| 邹平县| 四会市| 昆明市| 彭阳县| 梁山县| 大姚县| 绥滨县| 西昌市| 青海省| 东兰县| 柏乡县| 富川| 郓城县| 丰城市| 舟曲县| 崇仁县| 璧山县| 陵水| 牟定县| 新化县|