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

Mybatis多個字段模糊匹配同一個值的案例

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

需求:

搜索框中可輸入手機號,姓名,地址查詢,后臺需要對一個框中的多個字段做匹配查詢。

搜索

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

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

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

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

一、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>

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

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

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

.....
<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將多個字段拼接之后在進(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中只要有一個為NULL,則會返回NULL,這將導(dǎo)致你查不到正確數(shù)據(jù)。為了確保不為NULL,使用 IFNULL判斷下就可以了

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

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

相關(guān)文章

  • 關(guān)于Java垃圾回收開銷降低的幾條建議

    關(guān)于Java垃圾回收開銷降低的幾條建議

    垃圾回收(Garbage Collection)是Java虛擬機(JVM)垃圾回收器提供的一種用于在空閑時間不定時回收無任何對象引用的對象占據(jù)的內(nèi)存空間的一種機制,下面這篇文章主要介紹了關(guān)于Java垃圾回收開銷降低的幾條建議,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • SpringBoot使用Maven插件進(jìn)行項目打包的方法

    SpringBoot使用Maven插件進(jìn)行項目打包的方法

    這篇文章主要介紹了SpringBoot使用Maven插件進(jìn)行項目打包的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java實現(xiàn)按權(quán)重隨機數(shù)

    Java實現(xiàn)按權(quán)重隨機數(shù)

    這篇文章主要介紹了Java實現(xiàn)按權(quán)重隨機數(shù),本文給出了提出問題、分析問題、解決問題三個步驟,需要的朋友可以參考下
    2015-04-04
  • Java實現(xiàn)List集合轉(zhuǎn)樹形結(jié)構(gòu)的示例詳解

    Java實現(xiàn)List集合轉(zhuǎn)樹形結(jié)構(gòu)的示例詳解

    在開發(fā)中,我們通常需要將從數(shù)據(jù)庫中查詢的集合數(shù)據(jù)轉(zhuǎn)換成類似文件系統(tǒng)一樣的樹形集合。本文將利用Java語言實現(xiàn)這一功能,感興趣的可以了解一下
    2022-08-08
  • 最新評論

    天峻县| 宁远县| 泗洪县| 曲阜市| 多伦县| 无棣县| 连南| 大安市| 禹州市| 黔江区| 辽源市| 雅江县| 固原市| 缙云县| 通江县| 西城区| 梅河口市| 天津市| 海淀区| 静宁县| 道孚县| 方城县| 宿迁市| 玛曲县| 清水县| 临颍县| 余姚市| 长武县| 门头沟区| 兴国县| 九台市| 宜宾市| 朝阳市| 常山县| 沧州市| 南澳县| 博客| 普格县| 尚义县| 莱州市| 巧家县|