您現在的位置是:首頁 > 垂釣

「MyBatis」多關鍵字的模糊查詢

  • 由 萌狼藍天 發表于 垂釣
  • 2022-07-06
簡介1:根據供應商公司名稱模糊查詢 2:根據供應商負責人名字模糊查詢 3:根據電話模糊查詢 * @param npc 查詢的關鍵字 * @return List *

題目下面的名字用幾號字型

題目

現在我們要執行查詢操作,例如我要查詢商品的供應商資訊。供應商的資訊包括公司名稱,負責人名字,聯絡電話,公司地址等。

我也許會輸入電話號碼的前幾位查詢,也許會輸入公司名稱的某個字查詢,也許會輸出負責人的姓氏查詢……

我希望查出來的結果,是按照Id升序排序好了的。

要求

1。我要根據公司名稱查詢,只要公司名稱包含“廣東”、“深圳”的都可以被查詢出來

2。我要根據負責人名字查詢,只要負責人名字包含“周”、“吳”、“鄭”、“王”的都可以被查詢出來

3。我要根據電話號碼查詢,只要電話號碼包含“139”,“136”,“137”的都可以被查詢出來

相關程式碼

下面MyBatis的配置方式是Spring整合MyBatis的,詳情請參閱下面這篇文章

【Spring】【MyBatis】Spring整合MyBatis01 - 萌狼藍天 - 部落格園 (https://www。cnblogs。com/mllt/p/SpringAndMybatis01。html)

Mapper。java

/** * 查詢供應商資訊 * @param way 查詢方式。 1:根據供應商公司名稱模糊查詢 2:根據供應商負責人名字模糊查詢 3:根據電話模糊查詢 * @param npcs 查詢的關鍵字 * @return List */ public List getProviderByNCP(@Param(“way”) int way, @Param(“npcs”) List npcs);

SmbmsProvider是供應商物件。

Impl。java

package cc。mllt。impl;import cc。mllt。mapper。ProviderMapper;import cc。mllt。pojo。SmbmsProvider;import org。mybatis。spring。SqlSessionTemplate;import java。util。List;//實現類public class ProviderImpl implements ProviderMapper { private SqlSessionTemplate sqlSessionTemplate; public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate){ this。sqlSessionTemplate=sqlSessionTemplate; } @Override public List getProviderByNCP(int way, List npcs) { ProviderMapper providerMapper = sqlSessionTemplate。getMapper(ProviderMapper。class); return providerMapper。getProviderByNCP(way,npcs); }}

mapper。xml

<!—— public List getProviderByNCP(@Param(“way”) int way, @Param(“npc”) List npcs);——>

【輸出結果如下】

「MyBatis」多關鍵字的模糊查詢

[思路分析]1。最開始,引數沒有使用List,引起的問題

/** * 查詢供應商資訊 * @param way 查詢方式。 1:根據供應商公司名稱模糊查詢 2:根據供應商負責人名字模糊查詢 3:根據電話模糊查詢 * @param npc 查詢的關鍵字 * @return List */ public List getProviderByNCP(@Param(“way”) int way, @Param(“npc”) String npc);

這種方式有一個問題,我查詢“北京”,“深圳”需要分為兩次查詢,後面手動將查詢結果合併在一起,然後又要去考慮id升序排序問題……

正如你所見,很麻煩。尤其是排序問題。因為得到的結果是List

,排序要根據List裡面的SmbmsProvider物件裡面的id排序。

如果能一起將多個關鍵字一起查詢,將得到的結果,一個

Order

By

就解決了,所以,我們要去考慮使用的引數應該是個List,然後裡面包含我們想要查詢的多個關鍵字。

那麼傳入一個List,又怎麼在Mapper。xml中取出想要的東西呢,就發現了後面的

MyBatis

foreach

[思路分析]2。Mybatis的foreach

瞭解

MyBatis

foreach

標籤

相關資訊請查閱:

MyBatis foreach標籤 (biancheng。net)

[思路分析]3。 npc != ‘’

注意標題上的是兩個單引號,而不是一個雙引號

為什麼我特意用一個 if做判斷?

這裡應對的是List中存在

1:如果整個列表都為空(也就是一個空列表)

List list1 = new ArrayList<>();list1。add(null);list1。add(“”);

我們沒有在

When

中進行判斷,列表是否為空,所以它會繼續執行下去

「MyBatis」多關鍵字的模糊查詢

到達

foreach

的時候,開始遍歷,如果為空,則後續無語句,若不為空,則繼續新增

if

塊中的語句

測試當空List傳入時,結果如下

「MyBatis」多關鍵字的模糊查詢

Top