前言
声明:本专栏文章均为观看动力节点王鹤老师三大框架的视频所撰写的笔记,笔者实力有限,内容如有错误欢迎各位小伙伴在评论区指出。
视频链接:SSM-Mybatis
相信大家都进行过关键字搜索,而且大部分时间我们都无法做到精准搜索,因此实现关键字搜索的模糊查询操作可谓是相当重要的了,下面就一起看一下Mybatis中如何实现这一操作的。
1、模糊查询的第一种方式
首先回顾一下sql中的模糊查询,如下
select * from student where name like "%力"
Mybatis中,第一种方式就是在java代码的参数中写好like后面的内容,然后以参数的的形式传入mapper文件 进行拼接。
示例:
dao接口的模糊查询方法
//like第一种方式
List<Student> selectLikeOne(@Param("name") String name);
mapper文件
<!--like第一种方式-->
<select id="selectLikeOne" resultType="com.bjpowernode.domain.Student">
select * from student where name like #{name}
</select>
Test测试方法
@Test
public void testLikeOne(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
StudentDao dao = sqlSession.getMapper(StudentDao.class);
String name="%李%";
List<Student> students = dao.selectLikeOne(name);
sqlSession.close();
students.forEach( stu-> System.out.println(stu));
}
2、模糊查询的第二种方式
Mybatis中第二种模糊查询的方法不是在java代码中,比如上面的测试方法里面给出模糊查询的完整内容。而是将匹配符放在mapper文件中,然后只把需要匹配的关键字暴露出来自定义即可,显然第二种方式更具有体验感。
示例:
dao接口方法
//like第二种方式
List<Student> selectLikeTwo(@Param("name") String name);
mapper文件,注意:sql语句like的写法
<!--like第二种方式-->
<select id="selectLikeTwo" resultType="com.bjpowernode.domain.Student">
select * from student where name like "%" #{name} "%"
</select>
测试方法, 注意:这里的name的内容不需要在加入%符号,只需要匹配的关键字即可
@Test
public void testLikeTwo(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
StudentDao dao = sqlSession.getMapper(StudentDao.class);
String name="李";
List<Student> students = dao.selectLikeTwo(name);
sqlSession.close();
students.forEach( stu-> System.out.println(stu));
}