使用背景:
项目组使用自己封装的PageInterceptor,但是这里面有一处耗用cpu过高的地方
private String getCountSql(String sql) { int index = sql.toUpperCase().indexOf("FROM"); return "SELECT COUNT(*) " + sql.substring(index); }
这段count(*) 会把原有的sql直接包装进去,一般sql执行时间还可以,但是遇到比较复杂的sql,执行时间就会很高,综合考虑准备使用github的PageHelper
直接说实现结果
1.pom.xml配置:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency>
2.mybatis-conf.xml
<plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor" > <!-- 支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。 --> <property name="supportMethodsArguments" value="true"/> </plugin> </plugins>
3.实现类中
PageInfo<A> pageinfo = PageHelper.startPage(page.getCurrPage(), page.getPageSize(),page.getPageTotal() == null ? true : false).doSelectPageInfo(new ISelect() { @Override public void doSelect() { C.this.getDao(B.class).findHousePage(page); } }); if(page.getPageTotal() != null){ page.setTotal( page.getPageTotal().intValue()); }else { page.setTotal((int) pageinfo.getTotal()); } List<A> list =pageinfo.getList(); page.setRows(list); return page;
4.count方法:
Long findHousePage_COUNT(A page);
PageHelper会自动执行_COUNT 计算的接口
这次只是一个简单的实现例子,有关其他的特性,以后再继续整理
相关推荐
以下是一个简单的使用PageHelper进行分页查询的例子: ```java // 配置分页 PageHelper.startPage(pageNum, pageSize); // 执行查询 List<User> users = userMapper.selectAll(); // 获取Page对象 Page<User> ...
下面将详细介绍PageHelper插件的工作原理、功能特点以及如何在项目中集成和使用。 一、工作原理 PageHelper通过动态代理的方式,拦截SQL执行过程,自动添加分页相关的SQL语句。在查询前,PageHelper会根据设置的...
在使用Mybatis-PageHelper-5.3.1之前,你需要先在项目中集成Mybatis和PageHelper。这通常包括以下几个步骤: 1. 添加依赖:在你的Maven或Gradle项目中,你需要将PageHelper的依赖添加到构建文件中。对于Maven,可以...
### PageHelper 分页插件使用详解 #### 一、PageHelper简介 PageHelper是一款针对MyBatis的强大分页插件,它支持多种数据库,并且能够为开发者提供方便快捷的分页功能实现。PageHelper不仅提供了丰富的自定义设置...
3. **使用PageHelper进行分页**:在Service层,通过PageHelper的`startPage()`方法设定分页参数,然后调用Mapper接口的查询方法。 4. **获取总记录数**:对于多表查询,需要额外编写一个只计算总数的SQL,使用`...
在这个例子中,`PageParam`对象包含了当前页码和每页的记录数,PageHelper 会根据这些信息动态构建SQL。 前端与后端的交互通常通过Ajax 完成。当用户点击分页导航上的按钮时,前端会发送一个Ajax 请求,将当前页码...
在这个例子中,`PageHelper.startPage(pageNum, pageSize)`启动分页,`selectAllUsers()`是Mapper中的查询所有用户的方法。Page对象包含了当前页数据和分页信息,如总页数、总记录数等,可以方便地在Controller层...
1. 数据库查询:使用MyBatis配合PageHelper,通过设置PageHelper的参数(如页码、每页大小)来执行分页查询,PageHelper会自动处理SQL的limit部分。 2. 数据处理:Spring Boot的Controller层接收到请求后,调用...
在这个例子中,`selectByCondition` 是自定义的查询方法,PageInfo 是 PageHelper 提供的用于封装分页结果的类,包含了总页数、总记录数等信息。 通过这种方式,我们可以将 Mybatis Plus 的强大功能和 PageHelper ...
接下来,在Service层中注入Mapper,并使用PageHelper进行分页查询。例如: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public PageInfo<User> getUsersByPage...
在代码中,可以使用PageHelper提供的`startPage()`方法来启动分页,然后进行正常的查询操作。下面是一个简单的使用示例: ```java // 创建Page对象,通常是从请求参数中获取页码和每页数量 PageHelper.Page...
3. **PageHelper使用**:在Service或DAO层的方法中,我们可以通过PageHelper的startPage()方法来设置当前页码和每页显示的记录数。之后执行的任何MyBatis的查询语句都会自动转化为带有LIMIT和OFFSET的分页SQL。 4. ...
本例子将详细介绍如何在IDEA中使用MyBatis进行分页查询,并以员工工资为例进行说明。 首先,我们需要了解MyBatis中的分页插件PageHelper。PageHelper是MyBatis的一个非常实用的辅助插件,它可以无缝地与MyBatis整合...
这个"ssm纯注解配置例子.rar"文件显然包含了关于如何在项目中使用SSM框架进行纯注解配置的示例代码。下面将详细阐述SSM框架中的注解配置及其相关知识点。 首先,Spring框架提供了丰富的注解来简化配置,如`@...
# demoWeb 一个基于SpringMVC的web框架 1.0.5 从web项目迁移成maven项目 1.0.6 增加菜单框架ext实现,类路径调整 1.0.7 增加http工具类,demo例子 ...增加Mybatis插件pageHelper,Mapper doc内有相关文档
此外,JFinal 还支持分页查询,通过PageHelper插件可以轻松实现。 7. **导入数据库** "jfinal增删改查例子"项目已经包含了数据库文件,解压后可以直接导入到MySQL数据库。通常,这些文件可能是.sql格式,使用...
spring boot mybatis oracle 例子 1. 排序条件带上 2.分页语句下面连着查询语句 PageHelper.startPage(1, 2, "RECORD_DATE desc"); 实现分页,包已经导入了
MyBatis提供了分页插件,例如PageHelper,可以方便地实现分页功能。通过配置和使用这些插件,开发者可以在编写SQL时无需考虑分页逻辑,只需关注查询条件即可。 5. **FreeMarker** FreeMarker是一个模板引擎,用于...
本篇将详细介绍如何使用PageHelper进行分页,以及前端如何与后端配合实现分页功能。 **1. PageHelper 分页** PageHelper 是 GitHub 上的一个开源项目,用于 MyBatis 的分页插件,它提供了简单的API,可以方便地在...
在实际使用PageHelper时,我们首先需要在项目的pom.xml文件中添加PageHelper的依赖,然后在Mybatis的配置文件mybatis-config.xml中启用插件,并配置相应的数据库连接信息。接着,在Mapper接口中,我们可以使用...