SpringBoot中使用MyBatis,使用PageHelper进行分页查询以及碰到的错误
2018-01-26 17:46
1111 查看
第一步:Maven导入我们需要的jar包
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency>第二步:配置我们的PageHelper
//配置mybatis的分页插件pageHelper @Bean public PageHelper pageHelper(){ System.out.println("开始配置数据分页插件"); PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("offsetAsPageNum","true"); properties.setProperty("rowBoundsWithCount","true"); properties.setProperty("reasonable","true"); properties.setProperty("dialect","mysql"); //配置mysql数据库的方言 pageHelper.setProperties(properties); return pageHelper; }第三步:配置我们分页查询的Bean
/** * 分页bean */ import java.util.List; public class PageBean<T> { // 当前页 private Integer currentPage = 1; // 每页显示的总条数 private Integer pageSize = 10; // 总条数 private Integer totalNum; // 是否有下一页 private Integer isMore; // 总页数 private Integer totalPage; // 开始索引 private Integer startIndex; // 分页结果 private List<T> items; public PageBean() { super(); } public PageBean(Integer currentPage, Integer pageSize, Integer totalNum) { super(); this.currentPage = currentPage; this.pageSize = pageSize; this.totalNum = totalNum; this.totalPage = (this.totalNum+this.pageSize-1)/this.pageSize; this.startIndex = (this.currentPage-1)*this.pageSize; this.isMore = this.currentPage >= this.totalPage?0:1; } public Integer getCurrentPage() { return currentPage; } public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getTotalNum() { return totalNum; } public void setTotalNum(Integer totalNum) { this.totalNum = totalNum; } public Integer getIsMore() { return isMore; } public void setIsMore(Integer isMore) { this.isMore = isMore; } public Integer getTotalPage() { return totalPage; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public Integer getStartIndex() { return startIndex; } public void setStartIndex(Integer startIndex) { this.startIndex = startIndex; } public List<T> getItems() { return items; } public void setItems(List<T> items) { this.items = items; } }第四步:我们在我们的ServiceImpl当中去使用PageHelper,其中的UserModel是我们自己为对应数据库里面的数据
写的一个Model,userDao是我们自己写的去查询数据库的dao,我们需要去查询出我们想要的数据再由pageHelper
帮助分页。
@Override public List<UserModel> findUserModelByPage(int currentPage, int pageSize,String tableName) { //设置分页信息,分别是当前页数和每页显示的总记录数【记住:必须在mapper接口中的方法执行之前设置该分页信息】 PageHelper.startPage(currentPage, pageSize); List<UserModel> allItems = userDao.getAllUser(tableName); //全部记录 int countNums = allItems.size(); //总记录数 PageBean<UserModel> pageData = new PageBean<>(currentPage, pageSize, countNums); pageData.setItems(allItems); return pageData.getItems(); }在这个中间,我自己遇到了一个错误,刚开始按照上面的配置好,查询出来的没有进行分页,而是把下面这语句查询
出来的数据全部展现了出来。
List<UserModel> allItems = userDao.getAllUser(tableName); //全部记录后来,由网上去查询所知,现在我们在使用数据库的时候,都会去配置Druid数据库连接池,假如你在配置druid连接
池的时候,重新设置了SqlSessionFactory,那么第二步的配置PageHelper就不能单独配置一个bean了,而是需要配
置在SqlSessionFactory里面了,如下,那么就可以顺利解决查询不分页的问题。
@Beanpublic SqlSessionFactory sqlSessionFactory() throws Exception {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(druidDataSource());//mybatis分页PageHelper pageHelper = new PageHelper();Properties props = new Properties();props.setProperty("dialect", "mysql");props.setProperty("reasonable", "true");props.setProperty("supportMethodsArguments", "true");props.setProperty("returnPageInfo", "check");props.setProperty("params", "count=countSql");pageHelper.setProperties(props);//添加插件sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageHelper});//添加XML目录VFS.addImplClass(SpringBootVFS.class);PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));logger.info("dao层扫描包为:mapper/*.xml");return sqlSessionFactoryBean.getObject();}
相关文章推荐
- mybatis使用pageHelper插件进行查询分页
- [置顶] MyBatis基于Spring-boot集成通用Mapper以及pagehelper分页插件(含源码下载)
- Spring Boot系列教程十一: Mybatis使用分页插件PageHelper
- 记录问题:springboot中使用Mybatis-pagehelper分页插件遇到的版本兼容问题
- springboot + mybatis-pagehelper 参数查询不分页的bug。。。
- SpringBoot使用PageHelper进行分页
- Spring + Mybatis 使用 PageHelper 插件分页
- Mybatis分页插件 - PageHelper与springBoot的整合
- Maven+Spring + Mybatis 使用 PageHelper 插件分页
- SpringBoot集成MyBatis的分页插件PageHelper(回头草)
- SpringBoot Mybatis PageHelper分页插件的两种用法(一)
- mybatis pagehelp分页 Springmvc+Mybatis+pagehelper5.1.2+bootstrap table分页和分页查询
- Spring Boot系列六 Spring boot集成mybatis、分页插件pagehelper
- mybatis系列五:使用pagehelper5插件进行分页
- SpringBoot Mybatis PageHelper分页插件的两种用法(二)
- Spring + Mybatis 使用 PageHelper 插件分页
- spring-boot 集成mybatis的分页插件PageHelper和Generator (番外)
- SpringBoot集成MyBatis的分页插件PageHelper(回头草)
- spring-boot 集成mybatis的分页插件PageHelper和Generator (番外)
- Mybatis的插件 PageHelper 分页查询使用方法