时间:2023-03-09 12:09:41 | 栏目:JAVA代码 | 点击:次
我们实现查询除了
@org.junit.Test public void test02(){ SqlSession session = MybatisUtil.getSession(); UserDao mapper = session.getMapper(UserDao.class); List<User> allUser = mapper.getAllUser(); session.close(); for (User user : allUser) { System.out.println(user); } }
还有这样的方式,Mybatis官网有介绍
@org.junit.Test public void test06(){ SqlSession session = MybatisUtil.getSession(); //参数是接口的全限定类名加包名 List<User> users = session.selectList("com.dongmu.dao.UserDao.getAllUser"); for (User user : users) { System.out.println(user); } session.close(); }
那么我们下面就学习一下一个
@org.junit.Test public void test07(){ RowBounds bounds =new RowBounds(0,3); SqlSession session = MybatisUtil.getSession(); List<User> users = session.selectList("com.dongmu.dao.UserDao.getAllUser",null,bounds); for (User user : users) { System.out.println(user); } session.close(); }
这里总结一下自己注意到的细节,它的sql语句我们发现是查询的所有的,所以它实际上是逻辑分页,也就是说把结果全部查询除了然后进行按游标分页。
物理分页:物理分页就是数据库本身提供了分页方式,如MySQL的limit,oracle的rownum ,好处是效率高,不好的地方就是不同数据库有不同的搞法
逻辑分页:利用游标分页,好处是所有数据库都统一,坏处就是因为先查询到所有数据,所有效率低。
下面我们再介绍一个分页插件PageHelper
使用方式:
加入依赖:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> </dependency>
在mybatis的主配置文件中,在<environments>之前加入
<plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor" /> </plugins>
在进行失去了查询之前使用方法:
PageHelper.startPage(pageNum,pageSize);
查询结果
可以发现我们的PageHelper用到的是PreparedStatement进行的物理分页查询。