MyBatis模糊查询
1.参数中直接加入%%
// 测试代码
User user = new User;
user.setUserName("%小明%");
List<User> userList = userMapper.selectByLike(user);
// UserMapper.xml
<select id="selectByLike" parameterType="user" resultMap="userMap">
select *
from t_user
where userName like #{userName}
</select>
2.bind标签
- 单参数且无@Param注解:value="'%' + _parameter + '%'"
- 单参数且有@Param("name")注解:value="'%' + name + '%'",此时使用不可使用_parameter
- 多参数且是Map:value="'%' + key + '%'" 或 value="'%' + _parameter.key + '%'"
- 多参数且是类:(name是类中成员变量)value="'%' + name + '%'" 或 value="'%' + _parameter.name + '%'" 或 value="'%' + _parameter.getName() + '%'"
// 单参数且无@Param注解,_parameter代表该参数
// UserMapper.xml
<select id="selectByLike" parameterType="user" resultMap="userMap">
<bind name="pattern" value=" '%' + _parameter + '%' "/>
select *
from t_user
where userName like #{pattern}
</select>
// 单参数且有@Param注解,不能使用_parameter
// UserMapper.java
List<User> selectByLike(@Param("name") String name)
// UserMapper.xml
<select id="selectByLike" parameterType="user" resultMap="userMap">
<bind name="pattern" value=" '%' + name + '%' "/>
select *
from t_user
where userName like #{pattern}
</select>
// 其余情况略,大致同上
3.MySQL函数concat()
// UserMapper.xml
<select id="selectByLike" parameterType="user" resultMap="userMap">
select * from
t_user
where userName like concat('%', #{userName}, '%')
</select>