MyBatis10-扩展

十.扩展

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();
        }
    }

猜你喜欢

转载自blog.csdn.net/maniacxx/article/details/80394355
今日推荐