7、PageHelper分页查询
作者:互联网
1、MyBatis的分页方式:
逻辑分页与物理分页
1、逻辑分页:使用MyBatis自带的RowBounds进行分页,是一次性查询很多数据,然后再在结果中检索分页的数据。这样做弊端是需要消耗大量的内存、有内存溢出的风险、对数据库压力较大。
2、物理分页:使用分页插件PageHelper或者自己写sql分页(limit),是从数据库查询指定条数的数据,弥补了一次性全部查出的所有数据的种种缺点,比如需要大量的内存,对数据库查询压力较大等问题。
2、PageHelper的原理:
PageHelper是MyBatis提供的分页插件;首先是在Mybatis里面配置了分页拦截器(PageInterceptor),即在执行相关Sql之前会拦截做一点事情;通过setLocalPage()方法,将分页信息保存在当前线程中。查询方法与之处于同一个线程中,共享ThreadLocal中的数据。selectlist查询之后赋值给的List list。这个list是Page 类型。再将list放到PageInfo<>中即可。
3、PageHelper分页实现:
(1)、建工程:
建立Springboost工程;
(2)、改POM:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--SpringBoot框架web项目起步依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--lombok插件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <optional>true</optional> </dependency> <!--PageHelper插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency> </dependencies>
(3)、写YML:
server: port: 8081 spring: application: name: pagehelperdemo datasource: type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型 driver-class-name: org.gjt.mm.mysql.Driver #mysql驱动包 url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 druid: test-while-idle: false #关闭空闲检测 mybatis: mapperLocations: classpath:mapper/*.xml #resources下建mapper包
(4)、业务类:
//实现类 @Autowired private PageDemoMapper pageDemoMapper; /** * PageHelper分页查询 * @Param pageNum:页数 * @Param pageSize:每页显示的条目 * */ @Override public PageInfo<PageDemo> selectPage(Integer pageNum , Integer pageSize) { log.info("页数:"+pageNum); log.info("每页显示的条目:"+pageSize); //查询数据库的时候会自动加上limit //PageDemoMapper: List<PageDemo> selectAllDemo(); return PageHelper.startPage(pageNum, pageSize) .doSelectPageInfo(() -> pageDemoMapper.selectAllDemo()); }
标签:分页,spring,boot,查询,mysql,org,PageHelper 来源: https://www.cnblogs.com/Iven-L/p/16389669.html