1. 程式人生 > >mybatis中怎麼使用like形成動態模糊查詢,錯誤使用CONCAT拼接sql的看過來

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吧,騷年。。。。


相關推薦

mybatis怎麼使用like形成動態模糊查詢錯誤使用CONCAT拼接sql過來

這個問題曾經困擾了我很長時間,因為我需要動態引數的模糊查詢,上網找了很多,都說用CONCAT但我用ORACLE的時候發現並不能滿足我的需求。 今天就說一下,我是怎麼解決這個問題的。 其實我當時為了拼sql一經頭昏腦脹了,但是你想想看,為什麼一定要在sql中拼湊sql呢?

myBatis 操作 mysql時使用 like 關鍵進行模糊查詢的方法

我嘗試了以下三種方式:  一、 like '%#{mkName}%' 這種方式,myBatis直接報錯,說引數的數量不匹配。 二、 like '%'||#{mkName}||'%' 這種方式不報錯,但是查詢出來的結果是不是對的。比如,對於 mkName這個欄位,資料庫中只有 “小學”  這個值,但是當

mybatisLIKE模糊查詢的幾種寫法以及注意點

mybatis中對於使用like來進行模糊查詢的幾種方式: (1)使用${...} 注意:由於$是引數直接注入的,導致這種寫法,大括號裡面不能註明jdbcType,不然會報錯 org.mybatis.spring.MyBatisSystemException: nested

Mybatislike模糊查詢

需求:使用模糊查詢,查詢出年齡在23至27之間員工資訊? 員工表:t_user 1.使用mysql進行sql查詢 select * from t_user where u_name like 'et

ztree模糊查詢每次查詢關閉上次查詢到的節點重新展開

在ztree中使用模糊查詢時第一次查詢出來的結果選中,第二次查詢要求關閉第一次的查詢結果重新展開符合第二次的查詢結果 在js中使用expandAll(false);但是expendAll(false)在與expandNode一起使用時出現異常,在用斷點模式查詢發現,expendAll(fals

原來資料庫模糊查詢分組聯合查詢是這麼使用的(詳解)

1 模糊查詢 like關鍵字 萬用字元 % 任意長度的任意字串 _ 代表任意一個字元 [1-6] 代表1到6之間的一個字元 [^0-5] 代表不是0到5之間的一個字元 between 值1 and 值2 select * from 表名 where 列

Mybatis模糊查詢查詢不到中文卻可以查詢到英文和數字的一種解決辦法

一、問題描述 最近使用Mybatis對MySQL資料庫查詢時,遇到了這個問題:使用模糊查詢語句時,可以查詢英文,但是查詢不到中文,Eclipse中DEBUG輸出的資訊–如圖: 可以看到,查詢中文“彩”字兒時返回的0條記錄,查詢123時。返回了1條記錄。而

MyBatis】resultMap的一對多查詢結果的list只有一條資料(size=1)

問題:定義好resultMap之後,查詢結果中的list,其size都是1。(相當於“一對多”變成了“多對一”) 原因:因為返回的列沒有用於區分許可權的id,導致mybatis不知道如何區分,於是把每

Mybatis的update動態SQL語句 <trim></trim> 用法

color 單獨 null 多個 ride 逗號 myba 不用 log Mybatis Mapper中文件中 update時,需要set設置多個字段,有時逗號處理時,會報錯誤,所以會使用到<trim></trim> 使用trim就是為了刪掉最後

input動態模糊查詢的實現方式

query div 默認 什麽 input col area 壓力 vue   最近在用jQuery實現動態模糊查詢的時候,找了挺久都沒有找到像Vue.js的watch屬性這麽好用的動態模糊查詢方法。就分享一下目前遇到的坑和可以實現動態查詢的幾種方式。   1.jQuery

cxGrid FilterRow 添加左模糊查詢實現 %ABC%

onchange div 需要 custom hang 參考 for view http 參考了 踏雪無痕 的資料 :http://blog.csdn.net/zengcong2013/article/details/12343171 由於 cxGrid 中,使用較多是 c

MyBatissqlSession操作數據庫不報錯但無法實現數據修改(增、改、刪)

修改 () brush light pub clas java bat job public void addCustomerTest() throws Exception { SqlSession sqlSession = MyBatisUtils.ge

CI框架 模糊查詢鏈表查詢

news ont ike ech join desc flash last get $data = $this->db->from(‘flash_news‘) ->select(‘xx,xx,xx,xx‘) ->limit(2) -

SQL ServerLIKE %search_string% 走索引查詢(Index Seek)淺析

在SQL Server的SQL優化過程中,如果遇到WHERE條件中包含LIKE '%search_string%'是一件非常頭痛的事情。這種情況下,一般要修改業務邏輯或改寫SQL才能解決SQL執行計劃走索引掃描或全表掃描的問題。最近在優化SQL語句的時候,遇到了一個很有意思的問題。某些使用LIKE

SpringBootExample的動態條件查詢

一、無匹配器的情況: Person person = new Person();person.setName("test");... Example<Person> ex = Example.of(person); //動態查詢personRepository.findAll(ex); pe

mybatislike用法

MyBatis中Like語句使用方式 Oracle SELECT * FROM user WHERE name LIKE CONCAT(’%’,#{name},’%’) 或 SELECT * FROM user WHERE name LIKE ‘%’||#{name}|

關於程式碼進行排序查詢模糊查詢結果為空不能正常展示排序問題總結

使用springboot進行商品模糊查詢和選擇排序查詢,遇到了一下問題。 1.查詢出來結果為空: 我是最先使用的是在業務層拼接好模糊查詢的語句 也就是“ '%nam%' ” 我把這個這個整體當做引數

使用$符號進行模糊查詢不用#

<select id="queryAllVideo" resultMap="BaseResultMap" parameterType="String"> select v.*,u.face_image as face_image,u.nickname as nickname

mybatis對List使用in語法foreach語法

service中程式碼 public Integer deleteAlarmCountResultLogical(String deleted, ArrayList<String> idList){ HashMap<String, Object>

MyBatis多對一對映時執行sql語句的寫法

情境再現: 在使用MyBatis來進行多對一對映時,出現了sql語句中某個屬性為空的現象 <!-- 增加 地址資訊--> <insert id="insertAddress" par