mybatis 模糊查询 like的三种方式

Posted Samuel-Leung

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 模糊查询 like的三种方式相关的知识,希望对你有一定的参考价值。

第一种

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>

以上是关于mybatis 模糊查询 like的三种方式的主要内容,如果未能解决你的问题,请参考以下文章

mybatis like 模糊查询

mybatis-plus模糊查询

[MyBatis]MyBatis系列:模糊查询的4种实现方式待完善

[MyBatis]MyBatis系列:模糊查询的4种实现方式待完善

asp+access like 模糊查询查不到内容

Mybatis模糊查询(like)