like fuzzy query in Mybatis

  • 2020-06-07 04:35:39
  • OfStack

1. Directly add %% to the parameter


  param.setUsername("%CD%");
  param.setPassword("%11%");
 <select id="selectPersons" resultType="person" parameterType="person">
 select id,sex,age,username,password from person where true 
 <if test="username!=null"> AND username LIKE #{username}</if>
 <if test="password!=null">AND password LIKE #{password}</if>
 </select>

2. bind label


<select id="selectPersons" resultType="person" parameterType="person">
 <bind name="pattern" value="'%' + _parameter.username + '%'" />
 select id,sex,age,username,password 
 from person
 where username LIKE #{pattern}
</select>

3. CONCAT


where username LIKE concat(concat('%',#{username}),'%')

Related articles: