mybatis中怎麼使用like形成動態模糊查詢,錯誤使用CONCAT拼接sql的看過來
這個問題曾經困擾了我很長時間,因為我需要動態引數的模糊查詢,上網找了很多,都說用CONCAT但我用ORACLE的時候發現並不能滿足我的需求。
今天就說一下,我是怎麼解決這個問題的。
其實我當時為了拼sql一經頭昏腦脹了,但是你想想看,為什麼一定要在sql中拼湊sql呢?
直接連‘%value%’當作一個整體傳參,你想到了嗎?讓你遠離拼接sql實現更強大的功能。
這是重點:你是不要要問不在sql中拼湊sql那該怎麼拼湊一段sql呢?我們一起來看看
需要的格式是這樣的:
1、select
*
from "product_detail" where product_name like ‘%${value}%’
其中value是動態的,當我們在sql中拼湊時應該使用CONCAT,但oracle中只能拼湊帶單引號的。那問題來了
加了單引號,我們會發現,沒法動態獲取引數,為解決這個問題,來看看下面是怎麼做的吧。
2、 select
*
from "product_detail" where product_name like ${value}
好像兩段sql沒什麼區別,但就是一個小細節能決定成敗,這種做法最明顯的就是把‘%${value}%’
當成一個整體當作引數,是不是瞬間覺得好low?
別再用函式去拼sql,還不一定適用,當sql無法實現就用java吧,騷年。。。。