-
2021-10-22 11:10:11
Java开发工具有很多, Java分页工具类只是其中之一。
import java.util.List;
/**- Paging tool
- @author Administrator
*/
public class PageBean {
private int pageNo = 1; //Current page
private int pageSize = 4; //Number of pages per page
private int totalCount; //Total number of records
private int totalPages; //Total pages–read only
private List pageList; //The collection generic type corresponding to each page
public int getPageNo() {
return pageNo;
}
//The current page number cannot be less than 1 and cannot be greater than the total number of pages
public void setPageNo(int pageNo) {
if(pageNo<1)
this.pageNo = 1;
else if(pageNo > totalPages)
this.pageNo = totalPages;
else
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
//The total number of records determines the total number of pages
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
this.totalPages = (this.totalCount%this.pageSize==0)?this.totalCount/this.pageSize:this.totalCount/this.pageSize+1;
}
public int getTotalCount() {
return totalCount;
}
//Read only
public int getTotalPages() {
return totalPages;
}
public List getPageList() {
return pageList;
}
public void setPageList(List pageList) {
this.pageList = pageList;
}
public PageBean(int pageNo, int pageSize, int totalCount, int totalPages,
List pageList) {
super();
this.pageNo = pageNo;
this.pageSize = pageSize;
this.totalCount = totalCount;
this.totalPages = totalPages;
this.pageList = pageList;
}
public PageBean() {
super();
// TODO Auto-generated constructor stub
}
}
mysql 分页:select * from table limit (pageNo-1)*pageSize,pageSize;oracle分页:select a.* (select table.*,rowum rn from table) a where rn>(pageNo-1)pageSize and rn <=pageNopageSize;
这是最简单的分页工具之一。
更多相关内容 -
Java分页查询--分页显示(实例讲解)
2020-08-29 17:17:53下面小编就为大家带来一篇Java分页查询--分页显示(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
java分页之假分页实现简单的分页器
2020-09-02 11:15:05主要介绍了java分页之假分页实现简单的分页器的相关资料,需要的朋友可以参考下 -
java分页类封装
2018-09-12 22:46:38跟我上面的java底层简易封装配套的。有需要的也可以学习下。 -
java分页工具类
2018-04-12 12:32:06page.java java分页工具类 -
java分页的工具类
2019-03-29 11:54:47分页private Integer currentPage; private Integer prePage; private Integer nextPage; private Integer rowCount; private Integer pageRows = 5; -
Java分页查询显示应用的工具类
2018-07-31 11:33:27自己简单的做了一个初级分页,可以直接拿去应用,希望有帮助 -
JAVA分页显示代码.pdf
2021-10-30 15:01:48JAVA分页显示代码.pdf -
java分页 模糊查询 工具类page.util
2017-10-23 13:58:44java分页 模糊查询 工具类 page.util,导入里面注释有使用方法,非常好用 -
JAVA分页JAVA分页.doc
2022-06-09 22:04:36JAVA分页JAVA分页 -
java分页方法封装直接调用即可
2014-12-15 15:41:43此Demo使用java编写,可以封装成jar方便各种项目分页功能,只需传参即可。简单来说,本人就是吧分页的功能独立成一个项目,主要类是PageUtil.java 此类封装分页逻辑,页面自动生成分页区,数据显示条数可自动以,... -
java分页的简单实现
2017-11-20 17:03:08java分页的简单实现 用servlet jdbc实现 适合java语言的简单练习 -
java分页插件,简单实用
2018-03-21 16:58:11分页插件,还算不错,可以试试,可以学习下,还可以自己添加一些自己的需求,直接解压直接使用快速上手。还是很可以的。 -
JAVA分页大全(下载)
2019-03-01 16:44:54JAVA分页大全 博文链接:https://baiduhi.iteye.com/blog/233573 -
java分页工具集合
2020-11-06 17:37:11java分页工具集合说明一、PageHelper(1)pom(2)配置(3)使用正确使用错误使用二、mybatis-plus的分页插件(1)pom(2)配置(3)使用三、自定义工具类(1)创建分页工具类(2)使用 说明 更新时间:2020/11/6 17...java分页工具集合
说明
更新时间:2020/11/6 17:36,更新完基本内容
本文现对目前常见的java分页工具进行一次总结与记录,主要是基于自己的主观来进行总结,本文会持续更新,不断地扩充
注意:本文仅为记录学习轨迹,如有侵权,联系删除
一、PageHelper
这个工具只要是使用过mybatis的人基本都听过,这个工具个人觉得只适用于mytatis这个持久层框架,而且在使用上有很多的坑。
(1)pom
新建springboot项目之后,引入对应的pom坐标依赖
<!-- mybatis-spring-boot-starter :整合--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <!--Druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> <!--log4j:日志框架,建议引入--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--pageHelper分页工具--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency>
(2)配置
引进坐标依赖后需要进行yml文件的配置
#参考链接:https://www.cnblogs.com/hellokuangshen/p/12497041.html spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test1?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 password: 123 username: root #切换为druid数据源 type: com.alibaba.druid.pool.DruidDataSource #Spring Boot 默认是不注入这些属性值的,需要自己绑定 #druid 数据源专有配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入 #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j #需要导入log4j依赖 filters: stat,wall,log4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 # PageHelper分页插件 pagehelper: helperDialect: mysql reasonable: true #开启优化,如果开启优化,在分页页码结果没有数据的时候,会显示有数据的页码数据 supportMethodsArguments: true #是否支持接口参数来传递分页参数,默认false pageSizeZero: false #pageSize=0 返回所有 params: count=countSql mybatis: mapper-locations: classpath*:mapper/**/*.xml
(3)使用
在使用之前必须要注意一件事,pageHelper只适用于mybatis,如果没有经过mybayis直接进行分页就会分页失败
正确使用
@Override public PageInfo<User> pageQuery() { /** * 注意顺序不能乱,PageHelper.startPage设置完之后,下一句必须用mapper进行查询, * 也就是说userMapper.queryAll();这个语句必须放在PageHelper.startPage的下一句,不然分页失败 * 然后再 new PageInfo<>(list);返回分页结果 * * * 同时注意:mybatis的sql语句后面不能有";"结束符号 */ //设置分页参数,当前页数1,每页数据条数5条 PageHelper.startPage(1, 5); //查询数据 List<User> list = userMapper.queryAll(); //分页查询 PageInfo<User> userPageInfo = new PageInfo<>(list); return userPageInfo; } @Override public PageInfo<User> queryQueryAllByUserDto(UserDto userDto) { /** * 多条件的分页查询,查询条件用UserDto封装好 */ //分页参数默认值 Integer pageNum = 1; Integer pageSize = 10; if (userDto != null && userDto.getPageIndex() != null) { pageNum = userDto.getPageIndex(); } if (userDto != null && userDto.getPageSize() != null) { pageSize = userDto.getPageSize(); } //分页参数设置 PageHelper.startPage(pageNum,pageSize); //多条件查询 List<User> userList = userMapper.queryAllByUserDto(userDto); //分页 PageInfo<User> page = new PageInfo<>(userList); return page; }
同时注意查询的sql语句不能有分号,不然会分页失败
注意上面语句的使用顺序,不然会分页失败,同时注意sql语句的结尾不能有“;”符号
错误使用
出现分页失败的情况有很多种,例如不是用的mybatis框架,语句的调用顺序不对或者用的mybatis但是sql语句后面用了分号结束sql等
public PageInfo<User> pageQuery() { /** * 这种使用分页会失败,因为语句的调用顺序不对 */ //查询数据 List<User> list = userMapper.queryAll(); //设置分页参数,当前页数1,每页数据条数5条 PageHelper.startPage(1, 5); //分页查询 PageInfo<User> userPageInfo = new PageInfo<>(list); return userPageInfo; }
分页失败,设置的分页参数失效
二、mybatis-plus的分页插件
这个插件是mybats-plus用的一个分页插件,它在mybatis-plus里面有现应的集成,所以这个要结合mybatis-plus一起使用。
(1)pom
新建完springboot项目后,引入项目的坐标依赖
<!--Druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> <!--log4j--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> <!--mybatis-plus代码生成器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.0</version> </dependency> <!--mybatis-plus代码生成器默认模板--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version> </dependency> <!--hutool--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.4.7</version> </dependency>
(2)配置
mybatis-plus的分页配置可以参考mybatis-plus官网,这里给出我这边的配置
新建config包,创建配置类
import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @ClassName : MybatisPlusConfig * @Description : mybatis-plus配置分页插件 * @Author : CJH * @Date: 2020-11-05 17:14 */ @MapperScan("com.zsc.mapper") @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false // paginationInterceptor.setOverflow(false); // 设置最大单页限制数量,默认 500 条,-1 不受限制 // paginationInterceptor.setLimit(500); // 开启 count 的 join 优化,只针对部分 left join paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); return paginationInterceptor; } }
然后是yml的文件配置
#参考链接:https://www.cnblogs.com/hellokuangshen/p/12497041.html spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test1?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 password: 123 username: root #切换为druid数据源 type: com.alibaba.druid.pool.DruidDataSource #Spring Boot 默认是不注入这些属性值的,需要自己绑定 #druid 数据源专有配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入 #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j #需要导入log4j依赖 filters: stat,wall,log4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml
(3)使用
它的使用在mybatis-plus中已经有集成了,使用的时候也必须按照它的说明来使用,按照官网,这个分页工具的使用要结合mybatis-plus的条件构造器来使用,下面给出两个例子,一个是简单的分页查询,一个是多条件分页查询
package com.zsc.service.impl; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zsc.dto.UserDto; import com.zsc.entity.User; import com.zsc.mapper.UserMapper; import com.zsc.service.UserService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * <p> * user 服务实现类 * </p> * * @author 最强菜鸟 * @since 2020-11-04 */ @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Resource private UserMapper userMapper; @Override public Page<User> pageQuery() { //设置分页的当前页以及每页的数据条数 Page<User> userPage = new Page<>(1,5); //通过条件构造器设置设置要查询的数据,条件构造器什么都不设置的情况下默认查询所有 QueryWrapper<User> userQueryWrapper= new QueryWrapper<>(); //分页查询用selectPage这个方法 Page<User> page = userMapper.selectPage(userPage, userQueryWrapper); return page; } @Override public Page<User> pageQueryByUserDto(UserDto userDto) { //设置请求页数,默认1页5条数据 Page<User> userPage = new Page<>(1,5); if (userDto.getPageIndex()!=null) { userPage.setCurrent(userDto.getPageIndex()); } if(userDto.getPageSize() != null){ userPage.setSize(userDto.getPageSize()); } //条件构造器构造查询条件 QueryWrapper<User> userQueryWrapper = new QueryWrapper<>(); //主要是name,age,password三个字段构成的多条件查询 if(!StringUtils.isEmpty(userDto.getName())){ userQueryWrapper.like("name",userDto.getName()); } if(userDto.getAge() != null){ userQueryWrapper.like("age",userDto.getAge()); } if(!StringUtils.isEmpty(userDto.getPassword())){ userQueryWrapper.like("password",userDto.getPassword()); } //分页查询 Page<User> page = userMapper.selectPage(userPage, userQueryWrapper); return page; } }
三、自定义工具类
上面的两个分页工具分别对应mytatis和mybatis-plus框架,只有在对应的框架下使用才有分页效果,但有些时候我们只是写一个简单的增删改查,甚至都不是springboot项目和maven项目,就只是用最传统的jdbc连接进行数据库操作,这个时候就需要用到我们的自定义分页工具类了,下面的这个工具类是在网上找的一个个人觉得比较好的一个工具类,然后进行了相应的修改,得到一个最符合自己需求的一个分页工具类。
(1)创建分页工具类
这里创建了一个普通的java项目,新建一个config包用来存放该分页工具类
package com.zsc.utils; import java.util.ArrayList; import java.util.List; /** * @ClassName : PageUtil * @Description : 自定义分类工具 * @Author : CJH * @Date: 2020-11-06 10:36 */ public class PageUtil<T> { /** * 要分页的list数据 */ private List<T> myList; /** * 请求的页号,默认第1页 */ private int pageNum = 1; /** * 每页条数,默认10条 */ private int pageSize = 10; /** * 分页后的数据 */ private List<T> data; /** * 分页后的总页数 */ private int pageCount; /** * 总数据条数 */ private int recordCount; public boolean isHasPrePage() { return isHasPrePage; } public void setHasPrePage(boolean hasPrePage) { isHasPrePage = hasPrePage; } public boolean isHasNextPage() { return isHasNextPage; } public void setHasNextPage(boolean hasNextPage) { isHasNextPage = hasNextPage; } /** * 上一页 */ private int prePageIndex; /** * 下一页 */ private int nextPageIndex; /** * 是否第一页 */ private boolean firstPage; // 是否第一页 /** * 是否最后一页 */ private boolean lastPage; // 是否最后一页 /** * 是否有上一页 * * @return */ private boolean isHasPrePage; /** * 是否有下一页 * * @return */ private boolean isHasNextPage; // /** // * 返回分页结果集合 // * // * @return // */ // public PageUtil<T> getResult() { // PageUtil<T> p = new PageUtil<>(); // // //总数据条数 // p.setRecordCount(this.recordCount); // // //总页数 // p.setPageCount(this.pageCount); // // // //每页的数据条数 // p.setPageSize(this.pageSize); // // //是否有上一页 // p.setHasPrePage(this.isHasPrePage); // // //是否有下一页 // p.setHasNextPage(this.isHasNextPage); // // //上一页页码 // p.setPrePageIndex(this.prePageIndex); // // //下一页页码 // p.setNextPageIndex(this.nextPageIndex); // // //分页数据 // p.setData((ArrayList<T>) this.data); // // //请求的页数 // p.setPageNum(this.pageNum); // // return p; // } /** * 设置请求的页数 * * @param pageNum */ public void setPageNum(int pageNum) { // 每当页数改变,都会调用这个函数,筛选代码可以写在这里 this.pageNum = pageNum; // 上一页,下一页确定 prePageIndex = pageNum - 1; nextPageIndex = pageNum + 1; // 是否第一页,最后一页 if (pageNum == 1) { firstPage = true; } else { firstPage = false; } if (pageNum == pageCount) { lastPage = true; } else { lastPage = false; } // 筛选工作 data = new ArrayList<T>(); for (int i = (pageNum - 1) * pageSize; i < pageNum * pageSize && i < recordCount; i++) { data.add(myList.get(i)); } } /** * 返回请求页数 * * @return */ public int getPageNum() { return pageNum; } /** * 返回要分页的list数据 * * @return */ public List<T> getMyList() { return myList; } @Override public String toString() { return "{" + "recordCount=" + recordCount+ ", pageCount=" + pageCount + ", pageNum=" + pageNum + ", pageSize=" + pageSize + ", isPrePage=" + isHasPrePage + ", isNextPage=" + isHasNextPage + ", prePageIndex=" + prePageIndex + ", nextPageIndex=" + nextPageIndex + ", data=" + data + '}'; } /** * 设置要分页的数据 * * @param myList */ public PageUtil<T> setMyList(List<T> myList) { this.myList = myList; // 计算条数 recordCount = myList.size(); // 计算页数 if (recordCount % pageSize == 0) { pageCount = recordCount / pageSize; } else { pageCount = recordCount / pageSize + 1; } //计算是否有上一页 if(pageNum == 1){ isHasPrePage = false; }else{ isHasPrePage = true; } //计算是否有下一页 if(pageNum == pageCount){ isHasNextPage = false; }else { isHasNextPage = true; } // 筛选工作 data = new ArrayList<T>(); for (int i = (pageNum - 1) * pageSize; i < pageNum * pageSize && i < recordCount; i++) { data.add(myList.get(i)); } return this; } /** * 返回每页请求的数据条数 * * @return */ public int getPageSize() { return pageSize; } /** * 设置每页的请求条数 * * @param pageSize */ public void setPageSize(int pageSize) { this.pageSize = pageSize; } /** * 返回分页后的数据 * * @return */ public List<T> getData() { return data; } public void setData(ArrayList<T> data) { this.data = data; } public int getPageCount() { return pageCount; } public void setPageCount(int pageCount) { this.pageCount = pageCount; } public int getRecordCount() { return recordCount; } public void setRecordCount(int recordCount) { this.recordCount = recordCount; } public int getNextPageIndex() { return nextPageIndex; } public void setNextPageIndex(int nextPageIndex) { this.nextPageIndex = nextPageIndex; } public int getPrePageIndex() { return prePageIndex; } public void setPrePageIndex(int prePageIndex) { this.prePageIndex = prePageIndex; } public boolean isFirstPage() { return firstPage; } public void setFirstPage(boolean firstPage) { this.firstPage = firstPage; } public boolean isLastPage() { return lastPage; } public void setLastPage(boolean lastPage) { this.lastPage = lastPage; } }
(2)使用
下面给出两个例子,其中User类是自定义的类
package com.zsc.service; import com.zsc.entity.User; import com.zsc.utils.PageUtil; import java.util.ArrayList; import java.util.List; /** * @ClassName : PageService * @Description : * @Author : CJH * @Date: 2020-11-06 13:05 */ public class PageService { static List<String> getListString(){ ArrayList<String> list = new ArrayList<String>(); for (int i = 0; i < 36; i++) { list.add("hello"+i); } return list; } static List<User> getListUser(){ ArrayList<User> list = new ArrayList<User>(); for (int i = 0; i < 36; i++) { User user = new User(i,"zs"+i,10+i,"男"); list.add(user); } return list; } public static void main(String[] args) { //例子1 List<String> listString = getListString(); PageUtil<String> pageUtil = new PageUtil<>(); //请求页数 pageUtil.setPageNum(1); //每页是数据条数 pageUtil.setPageSize(4); //将要分页的数据传入,得到返回的分页结果 PageUtil<String> list = pageUtil.setMyList(listString); System.out.println("list = " + list); //例子2 List<User> listUser = getListUser(); PageUtil<User> userPageUtil = new PageUtil<>(); userPageUtil.setPageNum(1); userPageUtil.setPageSize(10); PageUtil<User> userPageUtil1 = userPageUtil.setMyList(listUser); System.out.println("userPageUtil1 = " + userPageUtil1); } }
-
java分页神器,内附案例文件
2018-09-30 15:49:29java分页神器,内附案例文件,绝对好用。适合java后端开发的同学。。 -
java分页设计
2016-11-09 18:02:20java分页技术 -
JAVA分页大全.pdf
2021-09-30 17:27:20JAVA分页大全.pdf -
java分页查询代码实现
2022-05-22 11:13:18所以可以分页进行查询。 public static void main(String[] args) { int totalCount = 132; int pagesize = 20; int currentPage = 1; while (totalCount>0){ int fromindex = (currentPage-1) * ...对于某个接口数据量比较大的时候 如果直接调用接口返回所有的数据,对于数据库的压力比较大。所以可以分页进行查询。
public static void main(String[] args) { int totalCount = 132; int pagesize = 20; int currentPage = 1; while (totalCount>0){ int fromindex = (currentPage-1) * pagesize; //如果剩余的总数小于当页的数量 那么直接把剩余总数当作查询的数量 if (totalCount < pagesize){ System.out.println("select * from table limit "+ fromindex + "," + totalCount); }else{ //如果剩余总数大于分页数量 那么按照分页数量进行查询 System.out.println("select * from table limit "+ fromindex + "," + pagesize); } totalCount = totalCount - pagesize; currentPage++; } }
-
Java分页实现(示例代码)
2021-02-28 18:36:29首先我们要清楚java分页的思路第一我们要明白前端页面需要向java后台传递当前页码数以及每页显示多少条数据第二java后台代码需要向前端页面传递每页显示的数据,以及总条数以及总页数代码如下:首先我们要创建一个分页...首先我们要清楚java分页的思路
第一我们要明白前端页面需要向java后台传递当前页码数以及每页显示多少条数据
第二java后台代码需要向前端页面传递每页显示的数据,以及总条数以及总页数
代码如下:
首先我们要创建一个分页类用来存储数据
public class PageObject implements Serializable {
private static final long serialVersionUID = 1L;
/** 当前页的页码值 */
private Integer pageCurrent = 1;
/** 页面大小 */
private Integer pageSize = 10;
/** 总行数(通过查询获得) */
private Integer rowCount = 0;
/** 总页数(通过计算获得) */
private Integer pageCount = 0;
/** 当前页记录 */
private List records;
public Integer getPageCurrent() {
return pageCurrent;
}
public void setPageCurrent(Integer pageCurrent) {
this.pageCurrent = pageCurrent;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getRowCount() {
return rowCount;
}
public void setRowCount(Integer rowCount) {
this.rowCount = rowCount;
}
public Integer getPageCount() {
pageCount = rowCount / pageSize;
if (rowCount % pageSize != 0) {
pageCount++;
}
return pageCount;
}
public void setPageCount(Integer pageCount) {
this.pageCount = pageCount;
}
public List getRecords() {
return records;
}
public void setRecords(List records) {
this.records = records;
}
@Override
public String toString() {
return "PageObject [pageCurrent=" + pageCurrent + ", pageSize=" + pageSize + ", rowCount=" + rowCount
+ ", pageCount=" + pageCount + ", records=" + records + "]";
}
}
Controller层方法:
@RequestMapping("/getLog")
@ResponseBody
public PageObject getLog(@RequestBody Map param) throws ParseException {
System.out.println("Map集合参数" + param);
String user = (String) param.get("user");
String date = (String) param.get("date");
Date parse=null;
if(date!=null) {
SimpleDateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
parse= dFormat.parse(date); // Date date = (Date) param.get("date");
}
System.out.println("解析后日期格式" + parse);
int pageCurrent = Integer.parseInt("" + param.get("pageCurrent"));
int pageSize = Integer.parseInt("" + param.get("pageSize"));
if (pageCurrent == 0) {
pageCurrent = 1;
}
if (pageSize == 0) {
pageSize = 10;
}
return logService.getLog(pageCurrent, pageSize, user, parse);
}
Service层代码:
@Autowired
SysLogDao logdao;
/***
* 根据日期或者用户查询
*/
@Override
public PageObject getLog( int pageCurrent, int pageSize,String user,Date date) {
PageObject pageObject = new PageObject();
// 设置当前页
pageObject.setPageCurrent(pageCurrent);
// 设置每页显示的条数
pageObject.setPageSize(pageSize);
// 设置总记录数
Map map=new HashMap();
map.put("user", user);
map.put("date", date);
int count = logdao.getLogCount(user,date);
System.out.println("=============");
System.out.println("总条数"+count);
pageObject.setPageCount(count);
// 设置总页数
int page = count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1;
pageObject.setRowCount(page);
// 设置每页显示数据集合
// 开始的记录数
int start = (pageCurrent - 1) * pageSize;
System.out.println(start+"-"+pageSize);
List byPage = logdao.getLog( start, pageSize,user,date);
pageObject.setRecords(byPage);
System.out.println(start+"-"+byPage);
return pageObject;
}
Mapper.xml代码如下:
select count(*) from sys_login_log
and login_user=#{user}
and log_date=#{date}
select * from sys_login_log
and login_user=#{user}
and log_date=#{date}
limit #{start},#{pageSize}
-
Java分页(limit)
2022-04-05 15:04:41分页涉及到对数据库中的所有数据进行分页所以我们先写一数据库查询方法(通用的查询方法)while部分根据连接的表进行更改 public static List<Staff> query(String sql, Object...params) throws ... -
Bootstrap和Java分页实例第一篇
2021-01-19 16:06:52现在遇到了bootstrap的分页与Java后台结合起来的分页封装问题,对于我这个Java菜鸟来说,包装分页还没玩过。故此,在网上找了这个。觉得很不错,所以决定记录到博客里面。 还没有实践,决定写完博客去实践。在上... -
java 分页实例
2014-11-03 18:01:11本代码包含HqlDao类(精华),Page类,page.jsp组件,和调用jsp的例子。...页面上可以实现上页,下页,首页,尾页及中间五页的分页功能。功能丰富简单易用。 JAVA自定义Util大放送-集成j2ee精英团队十年编程之精华 -
Java分页详细步骤
2020-12-17 15:06:59Java分页详细步骤 需要理解的Java分页核心思想: 变量: 当前页码pageIndex 当前页面显示条数pageSize 总页码pageCount 需要写在sql语句中limit后的分页起始位置-结束位置:(pageIndex-1)*pageSize,pageSize service... -
java 分页、批量删除
2013-06-07 20:51:19包含了jsp的简单分页,有首页、尾页、上下页、设置页面数字等,有完整的注释、包、ppt等,mysql数据库的,对后台管理的删除有不错的参考价值,非常适合web初学者,改改就可以在多少场合运用。 -
java 实现分页目录查询.zip
2021-02-01 18:38:02java 实现 目录文件的分页查询功能, 只需要调用封装好的方法,通过递归的方式返回文件的列表,有回调方法,可以处理目录下的文件 -
java分页代码完整版
2014-10-14 21:05:41请下载,你值得拥有!Java分页实现代码及注释,详细解析,包教包会,,你还在等什么呢,心动不如行动! -
Java简单高效实现分页功能
2020-09-07 18:11:09主要介绍了Java简单高效实现分页功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
java分页技术
2014-04-07 17:26:12java分页技术,简单好理解.不懂得地方问我 3,希望和大家一起探讨学习下