十.扩展
10.1 分页
• PageHelper是MyBatis中非常方便的第三方分页
插件。
• 官方文档:
https://github.com/pagehelper/MybatisPageHelper/blob/master/README_zh.md
• 我们可以对照官方文档的说明,快速的使用插件
10.1.1 maven导入
<!--pageHelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
10.1.2 test中的使用
public class MyBatisTest {
public SqlSessionFactory getSqlSessionFactory() throws IOException {
return new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
}
@Test
public void test1() throws IOException {
SqlSession sqlSession=getSqlSessionFactory().openSession();
try{
EmployeeMapper mapper=sqlSession.getMapper(EmployeeMapper.class);
//startPage(pageNum,pageSize); pageNum:第几页 pageSize:每页放几个数据,返回一个Page对象
Page<Object> page=PageHelper.startPage(7,1);
List<Employee> employees=mapper.getEmps();
System.out.println("当前页码:"+page.getPageNum());
System.out.println("总记录数:"+page.getTotal());
System.out.println("每页有几条:"+page.getPageSize());
System.out.println("总页码"+page.getPages());
//使用PageInfo包装查到的数组,返回一个PageInfo对象
PageInfo<Employee> info=new PageInfo<Employee>(employees);
//Page对象有的属性,PageInfo都有,并且有其他多的功能
System.out.println("是否第一页:"+info.isIsFirstPage());
System.out.println("是否最后一页:"+info.isIsLastPage());
//PageInfo另一种创建方式;传参为当前查到的数组和连续显示的页码
info=new PageInfo<Employee>(employees,5);
int[] nums=info.getNavigatepageNums();
for (int i=0 ; i < nums.length ;i++){
System.out.println(nums[i]);
}
for (Employee employee:employees){
System.out.println(employee);
}
}finally {
sqlSession.close();
}
}
10.2 批量操作
@Test
public void testBatch() throws IOException{
//传入一个ExecutorType.BATCH使得这个sqlSession对应的方法可以批量操作
//批量操作的特点:只传入一次sql,设置参数n次,执行1次,非批量操作会发送sql,设置参数,执行均为n次
SqlSession sqlSession=getSqlSessionFactory().openSession(ExecutorType.BATCH);
try {
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
for (int i = 0; i<10000; i++){
mapper.addEmp(new Employee(null, UUID.randomUUID().toString().substring(0,5),"1","[email protected]"));
}
sqlSession.commit();
}finally {
sqlSession.close();
}
}