需要用到模糊查询,网上找了好几篇博文,写的都不错,我总结了一下
第一种方式
<select id="findUserByLikeName1" parameterType="java.lang.String" resultMap="user">
select * from t_user where name like '%${name}%'
</select>
这种会有sql注入的问题,之前Java面试也经常问到 Mybatis中 $ 和 # 使用的区别。这种写法也不能加jdbcType=VARCHAR,否则也会报错。
第二种方式:
xml文件:
<select id="findUserByLikeName2" parameterType="java.lang.String" resultMap="user">
select * from t_user where name like #{
name,jdbcType=VARCHAR}
</select>
java代码:
public void findUserByLikeName2(){
String name = "Cloud";
List<User> test = userMapper.findUserByLikeName2("%" +name+"%");
System.out.println(test.size());
}
第三种方式:
xml文件:
<select id="findUserByLikeName3" parameterType="java.lang.String" resultMap="user">
select * from t_user where name like concat('%',#{
name,jdbcType=VARCHAR},'%')
</select>
java代码:
public void findUserByLikeName3(){
String name = "Cloud";
List<User> test = userMapper.findUserByLikeName3(name);
System.out.println(test.size());
}
总的来说,就是处理模糊查询中的%的问题,第二种第三种用的应该比较多