Mybatis中写模糊查询
模糊查询怎么写?
- Java代码执行的时候,传递通配符 % %
- 在sql拼接中使用通配符
编写Mapper接口
package com.hang.dao;
import com.hang.pojo.User;
import java.util.List;
import java.util.Map;
/**
* 操作数据库的
* Dao==Mapper
*/
public interface UserMapper {
/**
* 模糊查询
* @return
*/
List<User> getUserLike(String value);
}
编写Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace=绑定一个对应的Mapper/Dao接口,这个sql想要和UserDao这个接口发生关系-->
<mapper namespace="com.hang.dao.UserMapper">
<select id="getUserLike" resultType="com.hang.pojo.User">
select * from mybatis.user where name like #{value};
<!--select * from mybatis.user where name like "%"#{value}"%";-->
</select>
<!--SQL注入
select * from mybatis.user where id = ?
select * from mybatis.user where id = 1 or 1=1
-->
</mapper>
编写测试案例
@Test
public void getUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserLike("%吴%");//去掉%是查不到的 Java代码执行的时候,传递通配符 % % 或者在sql中在sql拼接中使用通配符! 但这种情况不安全 存在sql注入
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}