1. 程式人生 > >mybatis模糊查詢的注意點

mybatis模糊查詢的注意點

org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userName' in 'class java.lang.String'
### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userName' in 'class java.lang.String'

在我用使用者名稱查詢的時候mapper裡的sql句寫的不對,導致以上的錯誤產生。

錯誤的寫法:${}不能寫任意名稱!

<select id="findUserByName" parameterType="String" resultType="cn.com.mybatis.pojo.User">  
      SELECT * FROM USERINFO WHERE userName like '%${userName}%'  

</select>

正確的寫法:這裡不能寫userName而是寫value的原因不是很懂,大神求教學!!!

【追記原因】→#是佔位符,$是拼接符號,當接受簡單型別的時候“#{}”只能寫“value”而不能寫別的任意名稱!

<select id="findUserByName" parameterType="String" resultType="cn.com.mybatis.pojo.User">  

      SELECT * FROM USERINFO WHERE userName like '%${value}%'  

</select>

============================《追記》=======================

但是$並不能有效的防止sql的注入,下面的是用CONCAT的拼接寫法,能使用#就不要使用$!!!

<select id="findUserByName" parameterType="String" resultType="cn.com.mybatis.pojo.User">  

      SELECT * FROM USERINFO WHERE userName like CONCAT('%',#{userName},'%')

</select>

看了網上的各種方法,還有bind標籤也不錯,沒有試就不在這裡貼出程式碼了,有興趣的話百度去。

=========================================================

差別在於接受引數的設定,還是慣性思維導致的。

原因的懶惰!!!copy的單條的sql句,順手將接受引數設成了DB的專案名!!!

相關推薦

mybatis模糊查詢注意

org.apache.ibatis.exceptions.PersistenceException: ### Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException:

mybatis 模糊查詢

names sel concat earch result space ear ace res <mapper namespace="com.edc.dao.organize.OrganizeInfoMapper" > //對應相應的mapper.java文件

MyBatis模糊查詢

mybatis模糊查詢本文出自 “小小碼農” 博客,請務必保留此出處http://daoqingyu.blog.51cto.com/5185063/1950662MyBatis模糊查詢

Mybatis模糊查詢(like)

val ons param pass bin size user att pat 1. 參數中直接加入%% param.setUsername("%CD%");param.setPassword("%11%"); <select id="selectPerson

MyBatis模糊查詢相關

ava use con select app color myba ltm java Mybatis模糊查詢的實現不難,如下實例:在UserMapper.xml中根據用戶名模糊查詢用戶: <!-- 模糊查詢用戶 --> <select id="findSo

mybatis模糊查詢不到資料問題

問題描述: mapper: <!-- 模糊查詢 --> <select id="getByLikeUsername" parameterType="java.lang.String" resultType="zml.pojo.User"> select *

mybatis模糊查詢防止sql注入

SQL注入,大家都不陌生,是一種常見的攻擊方式。攻擊者在介面的表單資訊或URL上輸入一些奇怪的SQL片段(例如“or ‘1’=’1’”這樣的語句),有可能入侵引數檢驗不足的應用程式。所以,在我們的應用中需要做一些工作,來防備這樣的攻擊方式。在一些安全性要求很高的應用中(比如銀行軟體),經常使用將SQ

mybatis模糊查詢報錯

 模糊查詢報錯 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters fo

Mybatis 模糊查詢 like【筆記】Could not set parameters for mapping

當使用mybatis 做模糊查詢時如果這樣寫會報 Could not set parameters for mapping: ParameterMapping{property='keywords'# 是起的佔位符的作用,但是寫在了字串裡面無法起到佔位符的作用,這是我們要用

MyBatis模糊查詢不報錯但查不出資料的一種解決方案

今天在用MyBatis寫一個模糊查詢的時候,程式沒有報錯,但查不出來資料,隨即做了一個測試,部分程式碼如下: @Test public void findByNameTest() throws IOException { String resource = "SqlMa

mybatis模糊查詢去除特殊符號%(百分號)和_(下劃線)

在使用mybatis的模糊查詢時,有倆個特殊符號需要注意: %:相當於任意多個字元; _:相當於任意的單個字元; 根據需求可以選擇甄別,如果有要求排除特殊符號,那麼寫法如下: 在控制層接收到對應值得地方,加入replaceAll(): if(param != nul

MyBatis的優化注意

我們在專案中經常會用到Mybatis,可是我們怎麼才能靈活的應用mybatis,使我們的程式效能更好呢?接下來我們就來看看這幾個點。 1、批量操作       我們經常會遇到對批量資料的操

Mybatis,模糊查詢語句,以及傳參數的正確寫法

rec mapping rom cti turn ack ping tid col 不多說直接上代碼! 接口: public interface CommodityMapper { int deleteByPrimaryKey(Integer pr

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

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

mybatis 模糊查詢 防SQL注入

不同資料庫語法不一樣的,MySQL:1select * from user where name like concat('%', #{name}, '%');oracle:1select * from user where name like '%' || #{name} 

MyBatis模糊查詢的sql拼接

方法一: 在sql語句中,使用 ${} 代替 #{} 。 #{}表示一個佔位符,例如:#{id}--其中的id表示要接入輸入的引數,引數名稱就是id,如果輸入引數是簡單型別,#{}中的引數名可以任意,可以value或其它名稱; ${}:表示拼接sql串,將接收到引數的內容

聯合主鍵查詢注意

聯合查詢 2個表 test1 test2 結構一致 只有一個left join 只有一個條件 關聯 (隨機組合得到了多一倍的資料) 正常關聯2個主鍵 正常的資料查詢結果 查詢結果多了一倍 結論 : 如果聯合主鍵不放到on後面, 證明隨機組合的時候只用了其中一個

MySQL優化系列(二)--查詢優化(2)(外連線、多表聯合查詢以及查詢注意

繼續這一系列,上篇的簡單查詢優化並沒講完,第二點還有查詢注意點以及多表查詢優化呢!! 文章結構:(1)多表查詢步步優化;(2)查詢編寫的注意點。 /* 補充說明(往後有博友反饋的話,會繼續補充。) */ 一、2017-7-19: 關於“超大

mybatis 模糊查詢和的作用

1. sql中字串拼接    SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} 代替 #{...} (不能防止sql注入 #{}--->

mybatis中LIKE模糊查詢的幾種寫法以及注意

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