第一種
public void selectBykeyWord(String keyword) {
String id = "%" + keyword + "%";
String roleType = "%" + keyword + "%";
String roleName = "%" + keyword + "%";
userDao.selectBykeyWord(id,roleName,roleType);
}
在Dao層指定各個參數的別名
List<RoleEntity> selectBykeyWord(@Param("id") String id,@Param("roleName") String roleName,@Param("roleType") String roleType);
mapper.xml中
<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>
執行出來的SQL語句:
SELECT * FROM t_role WHERE role_name LIKE '%why%' OR id LIKE '%why%' OR role_type LIKE '%why%';
第二種
CONCAT()函數
MySQL的 CONCAT()函數用於將多個字符串連接成一個字符串,是最重要的mysql函數之一。
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
<!-- 按條件查詢用戶 -->
<select id="searchData" resultMap="BaseResultMap">
<bind name="pattern" value="searchData + '%'" />
select
<include refid="Base_Column_List" />
from user
where (name like #{pattern,jdbcType=VARCHAR} or login_name like #{pattern,jdbcType=VARCHAR}) and login_name != #{loginName,jdbcType=VARCHAR}
</select>