模糊查询的几种方式.
java代码执行的时候,传递通配符%%
@Test public void getUserByLike(){ try(SqlSession sqlSession = MybatisUtils.getSqlSession();) { UserMapper userDao = sqlSession.getMapper(UserMapper.class); //java中传递 通配符 List<User> users = userDao.getUserByLike("%liu%"); System.out.println(users); users.stream().forEach(System.out::println); } }
<select id="getUserByLike" parameterType="String" resultType="pojo.User"> select * from mybatis.user where name like #{name}; </select>
在Sql中拼接通配符
<select id="getUserByLike" parameterType="String" resultType="pojo.User"> //sql中 拼接 select * from mybatis.user where name like "%"#{name}"%"; </select>
使用concat连接
<select id="getUserByLike" parameterType="String" resultType="pojo.User"> select * from mybatis.user where name like concat('%',#{name},'%'); </select>
补充.
${}
与#{}
区别.
id = 1
#{id} ==> “1” 可以防止SQL注入
${id} ==> 1 不能防止SQL注入 一般用于传入数据库对象,例如传入表名,字段名。。。
这个博客总结的很好:https://blog.csdn.net/u013552450/article/details/72528498/