在进行模糊查询之前我们先搭建环境,其中包括MyBatis环境和数据库环境:
数据库表如下:
MyBatis环境搭建:https://blog.csdn.net/young_1004/article/details/81987259
% : 代表0 个或 1 个或多个字符
_ : 代表 1 个确切的字符
查名字中带有‘花’字的用户
<select id="findUserByNameOfLike" parameterType="String" resultType="com.ma.mybatis.pojo.User">
select * from user where name like '%花%'
</select>
测试
@Test
/**
* 使用模糊查询 用名称查找用户
*/
public void findUserByNameOfLike() throws IOException {
InputStream cof = Resources.getResourceAsStream("sqlMapConfig.xml");
//创建会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(cof);
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> Userlist = sqlSession.selectList("test.findUserByNameOfLike");
for(User list : Userlist){
System.out.println(list);
}
sqlSession.commit();
sqlSession.close();
}
效果
查询名字中第二个字为‘黄’的用户
<select id="findUserByNameOfLike" parameterType="String" resultType="com.ma.mybatis.pojo.User">
select * from user where name like '_黄%'
</select>
测试
@Test
/**
* 使用模糊查询 用名称查找用户
*/
public void findUserByNameOfLike() throws IOException {
InputStream cof = Resources.getResourceAsStream("sqlMapConfig.xml");
//创建会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(cof);
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> Userlist = sqlSession.selectList("test.findUserByNameOfLike");
for(User list : Userlist){
System.out.println(list);
}
sqlSession.commit();
sqlSession.close();
}
效果
${} : 以普通字符串的形式进行填充
#{} : 以占位符的形式进行填充(可以避免 sql 注入,推荐使用)
"%${value}%"
<select id="findUserByNameOfLike" parameterType="String" resultType="com.ma.mybatis.pojo.User">
select * from user where name like "%${value}%"
</select>
"%"#{name}"%
<select id="findUserByNameOfLike" parameterType="String" resultType="com.ma.mybatis.pojo.User">
select * from user where name like "%"#{name}"%"
</select>
List<User> Userlist = sqlSession.selectList("test.findUserByNameOfLike","花");