SpringBoot中使用PageHelper

简单使用

  • 集成

      <dependency>
          <groupId>com.github.pagehelper</groupId>
          <artifactId>pagehelper-spring-boot-starter</artifactId>
          <version>1.2.13</version>
      </dependency>
    
  • 添加properties配置项

      pagehelper.helper-dialect=sqlite
      pagehelper.reasonable=true
      pagehelper.support-methods-arguments=true
    
  • service、dao、mapper中进行常规查询

      //mapper
      select * from user
      
      //dao
      List<User> getUsers();
      
      //service
      public List<User> getUsers() {
          return wrapperDao.getUsers();
      }
    
  • controller中添加分页逻辑

    @GetMapping("getUsers")
    public PageInfo<User> getUsers(int page, int pageSize) {
        /*return PageHelper.startPage(page, pageSize).doSelectPageInfo(
                () -> wrapperService.getUsers()
        );*/
    
        PageHelper.startPage(page, pageSize);
        List<User> users = wrapperService.getUsers();
        return new PageInfo<>(users);
    }
    

问题记录

otherExceptionHandler:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property=‘First_PageHelper’, mode=IN, javaType=class java.lang.Integer, jdbcType=null, numericScale=null, resultMapId=‘null’, jdbcTypeName=‘null’, expression=‘null’}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ArrayIndexOutOfBoundsException: 0

//mapper.xml中简单的sql有问题,查了一天
select * from user;

//解决办法去掉分号,如下即可正常查询不报错
select * from user
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值