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

Mybatis多個(gè)字段模糊匹配同一個(gè)值的案例

 更新時(shí)間:2020年09月29日 09:37:39   作者:xqnode  
這篇文章主要介紹了Mybatis多個(gè)字段模糊匹配同一個(gè)值的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

需求:

搜索框中可輸入手機(jī)號(hào),姓名,地址查詢,后臺(tái)需要對(duì)一個(gè)框中的多個(gè)字段做匹配查詢。

搜索

可以在sql語句中做拼接條件查詢:

<if test="condition!=null and condition!=''">
AND CONCAT(r.name,a.name,a.phone,a.addr_detail) LIKE '%' #{condition} '%'
</if>

補(bǔ)充知識(shí):在Mybatis xml使用mysql數(shù)據(jù)庫進(jìn)行多字段模糊查詢(Like)

在mysql中使用Like進(jìn)行一些簡單輕量級(jí)的查詢,并不需要考慮太多效率問題。

一、Like單字段查詢比較簡單。

沒有特殊要求的話,直接使用%關(guān)鍵字%就進(jìn)行左右匹配查詢

.....
<mapper..>
  ...
  <select...>
    SELECT c.* FROM contacts c
    WHERE c.delete_time IS NULL
    <if test="keyWord != null and keyWord != ''">
      AND c.name LIKE concat('%',#{keyWord},'%')}
    </if>
    ORDER BY c.create_time DESC
  <select>
</mapper>

那如果我需要查詢多個(gè)字段,比如一個(gè)輸入框,既可以輸入姓名也可以輸入電話、手機(jī)進(jìn)行查詢,又該如何呢?

二、關(guān)于多字段查詢,這里有兩個(gè)方式可供參考:

1、對(duì)多個(gè)字段分別查詢,使用OR連接,這種方式效率在數(shù)據(jù)量大時(shí),效率很差

.....
<mapper..>
  ...
  <select...>
    SELECT c.* FROM contacts c
    WHERE c.delete_time IS NULL
    <if test="keyWord != null and keyWord != ''">
      AND c.name LIKE concat('%',#{keyWord},'%')}
      OR c.mobile LIKE concat('%',#{keyWord},'%')}
      OR c.telphone LIKE concat('%',#{keyWord},'%')}
    </if>
    ORDER BY c.create_time DESC
  <select>
</mapper>

2、使用concat將多個(gè)字段拼接之后在進(jìn)行模糊查詢,相比第一種更推薦第二種,執(zhí)行效率更好

.....
<mapper..>
  ...
  <select...>
    SELECT c.* FROM contacts c
    WHERE c.delete_time IS NULL
    <if test="keyWord != null and keyWord != ''">
      AND CONCAT(IFNULL(c.name,''),IFNULL(c.mobile,''),IFNULL(c.telephone,'')) LIKE concat('%',#{keyWord},'%')}
    </if>
    ORDER BY c.create_time DESC
  <select>
</mapper>

特別提醒:由于CONCAT中只要有一個(gè)為NULL,則會(huì)返回NULL,這將導(dǎo)致你查不到正確數(shù)據(jù)。為了確保不為NULL,使用 IFNULL判斷下就可以了

IFNULL() 函數(shù)用于判斷第一個(gè)表達(dá)式是否為 NULL,如果為 NULL 則返回第二個(gè)參數(shù)的值,如果不為 NULL 則返回第一個(gè)參數(shù)的值。

以上這篇Mybatis多個(gè)字段模糊匹配同一個(gè)值的案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot整合mqtt客戶端示例分享

    springboot整合mqtt客戶端示例分享

    這篇文章主要介紹了springboot整合mqtt客戶端示例分享的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • Java網(wǎng)絡(luò)編程之入門篇

    Java網(wǎng)絡(luò)編程之入門篇

    這篇文章主要介紹了Java網(wǎng)絡(luò)編程入門,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 詳解IDEA2020新建spring項(xiàng)目和c3p0連接池的創(chuàng)建和使用

    詳解IDEA2020新建spring項(xiàng)目和c3p0連接池的創(chuàng)建和使用

    C3P0是一個(gè)開源的JDBC連接池,它實(shí)現(xiàn)了數(shù)據(jù)源和JNDI綁定,本文就使用Spring實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 通過反射實(shí)現(xiàn)Java下的委托機(jī)制代碼詳解

    通過反射實(shí)現(xiàn)Java下的委托機(jī)制代碼詳解

    這篇文章主要介紹了通過反射實(shí)現(xiàn)Java下的委托機(jī)制代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 使用Java接收和處理OpenTelemetry數(shù)據(jù)的完整指南

    使用Java接收和處理OpenTelemetry數(shù)據(jù)的完整指南

    在現(xiàn)代分布式系統(tǒng)中,OpenTelemetry 成為了一種常見的標(biāo)準(zhǔn),用于跟蹤和監(jiān)控應(yīng)用程序的性能和行為,OTLP是 OpenTelemetry 社區(qū)定義的一種數(shù)據(jù)傳輸協(xié)議,文將介紹如何使用 Java 編寫代碼來接收和處理 OTLP 數(shù)據(jù),需要的朋友可以參考下
    2024-04-04
  • SpringBoot集成Druid配置(yaml版本配置文件)詳解

    SpringBoot集成Druid配置(yaml版本配置文件)詳解

    這篇文章主要介紹了SpringBoot集成Druid配置(yaml版本配置文件),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java日期時(shí)間類(Date、DateFormat、Calendar)解析

    Java日期時(shí)間類(Date、DateFormat、Calendar)解析

    這篇文章主要介紹了Java日期時(shí)間類(Date、DateFormat、Calendar)解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • SpringBoot攔截器實(shí)現(xiàn)登錄攔截的方法示例

    SpringBoot攔截器實(shí)現(xiàn)登錄攔截的方法示例

    這篇文章主要介紹了SpringBoot攔截器實(shí)現(xiàn)登錄攔截的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 詳解Java如何實(shí)現(xiàn)小頂堆和大頂堆

    詳解Java如何實(shí)現(xiàn)小頂堆和大頂堆

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章圍繞著Java如何實(shí)現(xiàn)小頂堆和大頂堆展開,文中有非常詳細(xì)的解釋及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java數(shù)據(jù)結(jié)構(gòu)之線性表

    Java數(shù)據(jù)結(jié)構(gòu)之線性表

    線性表是其組成元素間具有線性關(guān)系的一種數(shù)據(jù)結(jié)構(gòu),對(duì)線性表的基本操作主要有,獲取元素,設(shè)置元素值,遍歷,插入,刪除,查找,替換,排序等。而線性表可以采用順序儲(chǔ)存結(jié)構(gòu)和鏈?zhǔn)絻?chǔ)存結(jié)構(gòu),本節(jié)主要講解順序表、單鏈表以及雙鏈表的各種基本操作。
    2017-03-03

最新評(píng)論