詳解MyBatis模糊查詢LIKE的三種方式
模糊查詢也是數(shù)據(jù)庫SQL中使用頻率很高的SQL語句,使用MyBatis來進行更加靈活的模糊查詢。
直接傳參法
直接傳參法,就是將要查詢的關(guān)鍵字keyword,在代碼中拼接好要查詢的格式,如%keyword%,然后直接作為參數(shù)傳入mapper.xml的映射文件中。
public void selectBykeyWord(String keyword) { String id = "%" + keyword + "%"; String roleType = "%" + keyword + "%"; String roleName = "%" + keyword + "%"; userDao.selectBykeyWord(id,roleName,roleType); }
在Dao層指定各個參數(shù)的別名
<select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity"> SELECT * FROM t_role WHERE role_name LIKE #{roleName} OR id LIKE #{id} OR role_type LIKE #{roleType} </select>
執(zhí)行出來的SQL語句:
SELECT * FROM t_role WHERE role_name LIKE '%why%' OR id LIKE '%why%' OR role_type LIKE '%why%';
CONCAT()函數(shù)
MySQL的 CONCAT()函數(shù)用于將多個字符串連接成一個字符串,是最重要的mysql函數(shù)之一。
CONCAT(str1,str2,...)
List<RoleEntity> selectBykeyWord(@Param("keyword") String keyword);
<select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity"> SELECT * FROM t_role WHERE role_name LIKE CONCAT('%',#{keyword},'%') OR id LIKE CONCAT('%',#{keyword},'%') OR role_type LIKE CONCAT('%',#{keyword},'%') </select>
Mybatis的bind
List<RoleEntity> selectBykeyWord(@Param("keyword") String keyword);
<select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity"> <bind name="pattern" value="'%' + keyword + '%'" /> SELECT * FROM t_role WHERE role_name LIKE #{pattern} OR id LIKE #{pattern} OR role_type like #{pattern} </select>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java8新特性Lambda表達式的一些復(fù)雜用法總結(jié)
lambda表達式是JAVA8中提供的一種新的特性,它支持Java也能進行簡單的“函數(shù)式編程”。 下面這篇文章主要給大家介紹了關(guān)于Java8新特性Lambda表達式的一些復(fù)雜用法的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07SpringBoot如何實現(xiàn)持久化登錄狀態(tài)獲取
這篇文章主要介紹了SpringBoot 如何實現(xiàn)持久化登錄狀態(tài)獲取,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Mybatis?Plus?QueryWrapper復(fù)合用法詳解
這篇文章主要介紹了Mybatis?Plus?QueryWrapper復(fù)合用法詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。2022-01-01