Mybatis中的模糊查詢

來源:互聯網
上載者:User

標籤:

今天下午做的一個功能,要用到模糊查詢,欄位是description,剛開始我的寫法用的是sql中的模糊查詢語句,

但是這個有問題,只有將欄位的全部值傳入其中,才能查詢,所以不是迷糊查詢。

後來經過搜尋,發現要加上一個concat欄位,要先將字串拼接後,才能實現模糊查詢。

改成這個樣子後,模糊查詢功能實現。

 

在我搜尋到的部落格中海油別的幾種寫法,但是實驗了兩個,有一個成功,另外一個沒能實現模糊查詢,但是目前還不知道錯誤在哪裡。如果有人知道,請賜教。

他的部落格地址是:http://blog.sina.com.cn/s/blog_667bef380101f2da.html

我使用的就是他所說的第一種方法:

1. sql中字串拼接

   SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT(‘%‘, #{text}), ‘%‘);

我就是按照此方法實現了功能。

 

他的第二種方法:

2. 使用 ${...} 代替 #{...}

   SELECT * FROM tableName WHERE name LIKE ‘%${text}%‘;

這個我試過之後,發現並沒有實現模糊查詢的功能,而且目前也不知道哪裡出錯了,如果有人知道請指教。

 

他的第三種方法:

 

3. 程式中拼接

 

   Java

 

   // String searchText = "%" + text + "%";

 

   String searchText = new StringBuilder("%").append(text).append("%").toString();

 

   parameterMap.put("text", searchText);

 

 

 

   SqlMap.xml

 

   SELECT * FROM tableName WHERE name LIKE #{text};

這個方法我沒有試過,但是還是記錄下來,以後試試

 

他還有第四種方法

 

4. 大小寫匹配查詢

 

   SELECT *  FROM TABLENAME  WHERE UPPER(SUBSYSTEM) LIKE ‘%‘ || UPPER(‘jz‘) || ‘%‘

 

   或者 

 

   SELECT *   FROM TABLENAME  WHERE LOWER(SUBSYSTEM) LIKE ‘%‘ || LOWER(‘jz‘) || ‘%‘

正確。

 

 

Mybatis中的模糊查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.