mybatis分页插件的使用
引入依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.0</version> </dependency>
mybatis-config.xml添加插件配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--引入properties文件,此后就可以在当前文件中使用${key}的方式访问value--> <properties resource="jdbc.properties"></properties> <settings> <!--标准的日志--> <setting name="logImpl" value="STDOUT_LOGGING"/> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- typeAliases:设置类型别名,即为某个具体的类型设置一个别名, 在mybatis的范围中,就可以使用别名表示一个具体的类型。 --> <typeAliases> <!--不使用alias属性设置别名,默认为类名,不区分大小写。User或user--> <!-- <typeAlias type="org.example.entity.User" alias="user"></typeAlias>--> <!--通过包设置类型别名,指定包下所有的类型将全部拥有默认的别名,即类名,不区分大小写--> <package name="com.xxx.dynamicSQL.entity"/> </typeAliases> <plugins> <!--设置分页插件--> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins> <!-- environments数据库环境配置 --> <!-- 和Spring整合后environments配置将被废除 --> <environments default="development"> <environment id="development"> <!-- 使用JDBC事务管理 --> <transactionManager type="JDBC"/> <!-- 数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 加载映射文件 --> <mappers> <!--<mapper resource="mappers/EmpMapper.xml"></mapper>--> <!-- 以包的方式引入映射文件,但是必须满足下面2个条件: 1.mapper接口和映射文件所在的包必须一致 2.mapper接口的名字和映射文件的名字一致 --> <package name="com.xxx.dynamicSQL.mapper"/> </mappers> </configuration>
测试代码:
@Test public void testPage(){ SqlSession sqlSession = SqlSessionUtil.getSqlSession(); EmpMapper mapper = sqlSession.getMapper(EmpMapper.class); //查询功能之前开启分页功能 Page<Object> page = PageHelper.startPage(2, 5); List<Emp> list = mapper.getAllEmp(); //在查询功能之后可以获取分页相关的所有数据 PageInfo<Emp> pageInfo = new PageInfo<>(list,3);//3:导航分页的页码数 System.out.println("page对象:"+page); System.out.println("pageInfo对象:"+pageInfo); System.out.println(list); }
结果
page对象:Page{count=true, pageNum=2, pageSize=5, startRow=5, endRow=10, total=16, pages=4, reasonable=false, pageSizeZero=false}[Emp{empId=9, empName='小明2', age=11, gender='男'}, Emp{empId=10, empName='小明3', age=11, gender='男'}, Emp{empId=11, empName='小明4', age=11, gender='男'}, Emp{empId=12, empName='小明5', age=11, gender='男'}, Emp{empId=13, empName='小明6', age=11, gender='男'}] pageInfo对象:PageInfo{pageNum=2, pageSize=5, size=5, startRow=6, endRow=10, total=16, pages=4, list=Page{count=true, pageNum=2, pageSize=5, startRow=5, endRow=10, total=16, pages=4, reasonable=false, pageSizeZero=false}[Emp{empId=9, empName='小明2', age=11, gender='男'}, Emp{empId=10, empName='小明3', age=11, gender='男'}, Emp{empId=11, empName='小明4', age=11, gender='男'}, Emp{empId=12, empName='小明5', age=11, gender='男'}, Emp{empId=13, empName='小明6', age=11, gender='男'}], prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true, navigatePages=8, navigateFirstPage=1, navigateLastPage=4, navigatepageNums=[1, 2, 3, 4]} Page{count=true, pageNum=2, pageSize=5, startRow=5, endRow=10, total=16, pages=4, reasonable=false, pageSizeZero=false}[Emp{empId=9, empName='小明2', age=11, gender='男'}, Emp{empId=10, empName='小明3', age=11, gender='男'}, Emp{empId=11, empName='小明4', age=11, gender='男'}, Emp{empId=12, empName='小明5', age=11, gender='男'}, Emp{empId=13, empName='小明6', age=11, gender='男'}]