一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Mybatis多個字段模糊匹配同一個值的案例

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

2020-09-29 10:45xqnode Java教程

這篇文章主要介紹了Mybatis多個字段模糊匹配同一個值的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

需求:

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

搜索

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

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

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
.....
<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ī)進(jìn)行查詢,又該如何呢?

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.....
<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í)行效率更好

?
1
2
3
4
5
6
7
8
9
10
11
12
.....
<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)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/xqnode/article/details/77654435

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产欧美精品一区二区三区 | 极品主播的慰在线播放 | 欧美日韩中文字幕一区二区高清 | 亚洲另类中文字幕 | 97午夜| 黑人k8经典 | 久久青青草原精品国产软件 | 亚洲天堂成人在线 | 大片毛片女女女女女女女 | 日本人添下面的全过程 | 四虎影院的网址 | 国产精品亚洲va在线观看 | 男女福利视频 | 亚洲精品一区二区三区在线观看 | 91视频夜色| 好男人社区www影院在线观看 | 奇米影视奇米色777欧美 | 美女被视频 | 免费观看成年肉动漫网站 | 欧美一区二区三区四区在线观看 | 好大好深视频 | 99re在线精品视频免费 | 久久国产精品二区99 | 欧美亚洲另类综合 | 91精品国产综合久久精品 | 亚洲AV无码偷拍在线观看 | 色姑娘久久 | 无人在线视频高清免费观看动漫 | 手机看片自拍自自拍日韩免费 | 美女视频在线观看视频 | 91在线一区二区三区 | 日本最大的黄色网站 | 大叔在线观看 | 日本不卡一区二区三区在线观看 | poronovideos极度变态 | 校园春色自拍偷拍 | 日本高清免费中文字幕不卡 | 成人一区二区丝袜美腿 | 精品高潮呻吟99AV无码 | 国产精品久久久久久五月尺 | 欧美日韩视频在线一区二区 |