关于Springboot中使用Pagehelper说明

1. Pagehelper简介

PageHelper官网
在这里插入图片描述

2. springboot整合pagehelper说明

2.1 引入依赖

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>

2.2 配置pagehelper

yml配置与java配置二选一即可

2.2.1 yml配置

pagehelper:
  params: count=countSql
  reasonable: true
  support-methods-arguments: true
  auto-dialect: mysql

2.2.2 JAVA配置

@Configuration
@ConditionalOnProperty(name = "pagehelper.supportMethodsArguments")
public class PageHelperConfig {

    /**
     * 注入pageHelper配置
     */
    @Bean
    public PageHelper getPageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("reasonable", "true");
        properties.setProperty("supportMethodsArguments", "true");
        properties.setProperty("params", "count=countSql");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

2.2.3 配置说明

  1. helperDialect :分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置 helperDialect 属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:oracle , mysql , mariadb , sqlite , hsqldb , postgresql, db2 , sqlserver , informix , h2 ,sqlserver2012 , derby
    特别注意:使用 SqlServer2012 数据库时,需要手动指定为 sqlserver2012 ,否则会使用 SqlServer2005 的方式进行分页。 你也可以实现 AbstractHelperDialect ,然后配置该属性为实现类的全限定名称即可使用自定义的实现方法。
  2. reasonable :分页合理化参数,默认值为 false 。当该参数设置为 true 时, pageNum<=0 时会查询第一页, pageNum>pages (超过总数时),会查询最后一页。默认 false 时,直接根据参数进行查询
  3. supportMethodsArguments :支持通过 Mapper 接口参数来传递分页参数,默认值 false ,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和 ArgumentsObjTest 。
  4. params :为了支持 startPage(Object params) 方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable ,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero= pageSizeZero

2.3 使用pagehelper

controller.java

	@PostMapping("/logs")
    public CommonResult listLogs(Integer currentPage,Integer size,SelectLogRequest request) {
        return new CommonResult(logService.queryByLimit(currentPage,size,request);
    }

logService.java

 /**
     * 按条件分页查询数据
     * @param currentPage 当前页码
     * @param size 当前页大小
     * @param request 查询条件
     * @return
     */
    PageInfo<LogPo> queryByLimit(Integer currentPage, Integer size, SelectLogRequest request);

logServiceImpl.java

 /**
     * 按条件分页查询数据
     *
     * @param request 分页查询条件
     * @return 日志列表
     */
    @Override
    public PageInfo<LogPo> queryByLimit(Integer currentPage, Integer size, SelectLogRequest request) {
        PageHelper.startPage(currentPage, size);

        //按条件分页查询
        List<LogPo> logs = logMapper.queryByLimit(request);
        PageInfo<LogPo> pageInfo = new PageInfo<LogPo>(logs);
        return pageInfo;
    }

logMapper.java

List<LogPo> queryByLimit(@Param("logDto") SelectLogRequest logDto);

logMapper.xml

<select id="queryByLimit" resultMap="PublishLogsMap">
        select
        id, properties_path, log_path, version, operate, execute_user, execute_result, gmt_create
        from publish_logs
        <include refid="queryWhere"></include>
        order by gmt_create desc
    </select>

使用说明

  • 返回值为PageInfo类型
  • 使用PageHelper.startPage(currentPage, size);开始分页
  • 查询符合条件的记录,并将记录封闭到PageInfo中返回
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Spring Boot使用PageHelper非常简单。只需按照以下步骤操作: 1. 添加依赖项:在pom.xml文件添加以下依赖项: ``` <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.13</version> </dependency> ``` 2. 配置PageHelper:在application.properties文件添加以下配置: ``` # 分页插件配置 pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql ``` 3. 在Mapper使用PageHelper:在Mapper接口添加@Mapper注解,并在方法使用PageHelper.startPage()方法来启用分页功能。例如: ``` @Mapper public interface UserMapper { List<User> findAll(); @Select("SELECT * FROM user WHERE name = #{name}") List<User> findByName(@Param("name") String name); @Select("SELECT * FROM user") void findByPage(); @Select("SELECT * FROM user") void findByPage2(Page page); } ``` 在上面的示例,findByPage()和findByPage2()方法都使用PageHelper.startPage()方法来启用分页功能。findByPage()方法使用默认的分页参数,而findByPage2()方法使用自定义的分页参数。 4. 在Service使用Mapper:在Service注入Mapper,并在方法调用Mapper的方法来获取分页数据。例如: ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public PageInfo<User> findAll(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List<User> userList = userMapper.findAll(); return new PageInfo<>(userList); } @Override public PageInfo<User> findByName(String name, int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List<User> userList = userMapper.findByName(name); return new PageInfo<>(userList); } @Override public PageInfo<User> findByPage(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); userMapper.findByPage(); return new PageInfo<>(userMapper.findByPage()); } @Override public PageInfo<User> findByPage2(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); userMapper.findByPage2(new Page(pageNum, pageSize)); return new PageInfo<>(userMapper.findByPage2(new Page(pageNum, pageSize))); } } ``` 在上面的示例,findAll()和findByName()方法使用Mapper的方法来获取分页数据,并将结果封装为PageInfo对象返回。findByPage()和findByPage2()方法分别使用Mapper的findByPage()和findByPage2()方法来获取分页数据,并将结果封装为PageInfo对象返回。 总之,使用PageHelper来实现分页功能非常简单,只需按照上述步骤操作即可。 ### 回答2: SpringBoot是一个非常流行的Java开发框架,在使用SpringBoot开发Web应用程序时,程序员们经常要与关系型数据库打交道。在处理大量数据时,分页展示数据是非常必要的,PageHelper是一个非常优秀的分页插件,它可以很好的与SpringBoot集成,帮助开发人员实现数据分页展示。 PageHelper是Mybatis的分页插件,它采用拦截SQL语句的方式,来实现数据分页。在SpringBoot使用PageHelper,首先需要在pom.xml文件引入PageHelper的依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> ``` 引入依赖后,需要在application.yml或application.properties文件配置PageHelper的相关参数,例如: ```yml pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql autoRuntimeDialect: true closeConn: true ``` 然后,在DAO层,引入PageHelper插件: ```java import com.github.pagehelper.PageHelper; import org.springframework.stereotype.Repository; @Repository public interface UserDao { /** * 获取用户列表 * * @param pageNum 页码 * @param pageSize 每页大小 * @return 用户列表 */ List<User> getUsers(int pageNum, int pageSize); } ``` 在Service层,调用DAO的方法,并传入分页参数: ```java import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImpl implements UserService { private final UserDao userDao; @Autowired public UserServiceImpl(UserDao userDao) { this.userDao = userDao; } @Override public List<User> getUsers(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); return userDao.getUsers(pageNum, pageSize); } } ``` 最后,在Controller层,接收前端传来的分页参数,调用Service层的方法,并将结果返回给前端: ```java import com.example.demo.entity.User; import com.example.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class UserController { private final UserService userService; @Autowired public UserController(UserService userService) { this.userService = userService; } @GetMapping("/user") public List<User> getUsers(@RequestParam("pageNum") int pageNum, @RequestParam("pageSize") int pageSize) { return userService.getUsers(pageNum, pageSize); } } ``` 以上就是使用SpringBoot使用PageHelper的简单示例,大家可以在自己的开发根据实际情况使用PageHelper是一个非常强大、易用的分页插件,在大部分Java开发都非常使用广泛。 ### 回答3: Spring Boot是基于Spring框架的一种快速开发框架,并且具有很好的适应性和灵活性。在Spring Boot,我们需要使用PageHelper插件来分页查询。 PageHelper是一个开源的MyBatis分页插件,可以帮助我们实现MyBatis分页功能。在Spring Boot使用PageHelper分页插件,需要进行以下操作: 1. 在pom.xml文件添加PageHelper依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.13</version> </dependency> 2. 在配置文件添加PageHelper配置 在application.yml或者application.properties添加以下配置即可: pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql 具体配置项可以参考PageHelper官方文档。 3. 在mapper.xml配置分页查询 在mapper.xml使用PageHelper提供的startPage方法来进行数据分页查询: <select id="getList" resultMap="resultMap"> select * from user <where> <if test="name!=null and name!=''"> and name like concat(concat('%', #{name}), '%') </if> </where> order by id desc //分页查询 limit #{pageNo}, #{pageSize} </select> 这里使用PageHelper默认的分页方式,传入页码和每页大小两个参数即可。如果需要使用其他方式进行分页,可以参考PageHelper官方文档进行配置。 4. 在Service调用mapper方法 最后,在Service调用mapper的getList方法即可实现分页查询: public PageInfo<User> getList(String name, int pageNo, int pageSize) { PageInfo<User> pageInfo = PageHelper.startPage(pageNo, pageSize) .doSelectPageInfo(() -> this.userMapper.getList(name)); return pageInfo; } 这里使用PageHelper提供的startPage方法来启动分页功能,并且使用doSelectPageInfo方法将查询结果封装成PageInfo对象返回。通过这种方式,就可以很方便地在Spring Boot实现分页查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值