mybatis 模糊查詢的實現(xiàn)方法
mybatis 模糊查詢的實現(xiàn)方法
mybatis的逆向助手確實好用,可以省去很多編寫常規(guī)sql語句的時間,但是它沒辦法自動生成模糊查詢語句,但開發(fā)中模糊查詢是必不可少的,所以,需要手動對mapper編寫模糊查詢功能。
這里先明確MyBatis/Ibatis中#和$的區(qū)別:
1. #將傳入的數(shù)據(jù)都當成一個字符串,會對自動傳入的數(shù)據(jù)加一個雙引號。如:order by #user_id#,如果傳入的值是111,那么解析成sql時的值為order by “111”, 如果傳入的值是id,則解析成的sql為order by “id”.
2. $將傳入的數(shù)據(jù)直接顯示生成在sql中。如:order by $user_id$,如果傳入的值是111,那么解析成sql時的值為order by user_id, 如果傳入的值是id,則解析成的sql為order by id.
3. #方式能夠很大程度防止sql注入。
4. $方式無法防止Sql注入。
5. $方式一般用于傳入數(shù)據(jù)庫對象,例如傳入表名.
6. 一般能用#的就別用$.
ps:在使用mybatis中還遇到<![CDATA[]]>的用法,在該符號內(nèi)的語句,將不會被當成字符串來處理,而是直接當成sql語句,比如要執(zhí)行一個存儲過程。
我們的需求是對一個User進行模糊查詢,思路是對所有基本字段(username,gender等)都跟傳入的key(關(guān)鍵字)進行比較。
1、對UserMapper.xml編碼
<select id="queryUserByKey" parameterType="string"
resultType="com.lqr.pojo.User">
select * from user where uid like CONCAT('%',#{key},'%')
or username like CONCAT('%',#{key},'%')
or realname like CONCAT('%',#{key},'%')
or identification like CONCAT('%',#{key},'%')
or email like CONCAT('%',#{key},'%')
</select>
2、對UserMapper.java編碼
List<User> queryUserByKey(String key);
以上是本人在開發(fā)中遇到的情景,往后有其他mybatis模糊查詢的使用再繼續(xù)記錄。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信