java常用公共代码二之分页代码的实现
在项目中,我们经常会写到一些公共的代码,来让开发人员调用,减少代码重复,下面,我就将一些常用到的公共类贴出来和大家分享!!
二、分页代码实现:在项目中,分页是一个项目中必不可少的,它可以防止我们从数据库中进行大量数据查询时速度变慢,提高我们的查询效率
1、定义分页模型:PageModel
- package com.common.page;
- import java.util.List;
- /**
- * 封装分页信息
- * @author Administrator
- *
- */
- public class PageModel<E> {
- //结果集
- private List<E> list;
- //查询记录数
- private int totalRecords;
- //每页多少条数据
- private int pageSize;
- //第几页
- private int pageNo;
- /**
- * 总页数
- * @return
- */
- public int getTotalPages() {
- return (totalRecords + pageSize - 1) / pageSize;
- }
- /**
- * 取得首页
- * @return
- */
- public int getTopPageNo() {
- return 1;
- }
- /**
- * 上一页
- * @return
- */
- public int getPreviousPageNo() {
- if (pageNo <= 1) {
- return 1;
- }
- return pageNo - 1;
- }
- /**
- * 下一页
- * @return
- */
- public int getNextPageNo() {
- if (pageNo >= getBottomPageNo()) {
- return getBottomPageNo();
- }
- return pageNo + 1;
- }
- /**
- * 取得尾页
- * @return
- */
- public int getBottomPageNo() {
- return getTotalPages();
- }
- public List<E> getList() {
- return list;
- }
- public void setList(List<E> list) {
- this.list = list;
- }
- public int getTotalRecords() {
- return totalRecords;
- }
- public void setTotalRecords(int totalRecords) {
- this.totalRecords = totalRecords;
- }
- public int getPageSize() {
- return pageSize;
- }
- public void setPageSize(int pageSize) {
- this.pageSize = pageSize;
- }
- public int getPageNo() {
- return pageNo;
- }
- public void setPageNo(int pageNo) {
- this.pageNo = pageNo;
- }
- }
2、分页测试:在MySQL中建立admin表,里面有字段id、name、password
3、简历Admin的实体bean类:
- package com.common.page;
- public class Admin {
- private int id;
- private String name;
- private String password;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
4、测试调用:
- package com.common.page;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- import com.common.db.DbUtil;
- public class Client {
- public static PageModel findAdmins(int pageNo,int pageSize){
- Connection conn=DbUtil.getConnection();
- String sql="select * from admin limit ?,?";
- PageModel pageModel=null;
- PreparedStatement pstm=null;
- ResultSet rs=null;
- Admin admin=null;
- List<Admin> list=new ArrayList<Admin>();
- try {
- pstm=conn.prepareStatement(sql);
- pstm.setInt(1, (pageNo-1)*pageSize);
- pstm.setInt(2, pageNo*pageSize);
- rs=pstm.executeQuery();;
- while(rs.next()){
- admin=new Admin();
- admin.setId(rs.getInt("a_id"));
- admin.setName(rs.getString("a_name"));
- admin.setPassword(rs.getString("a_pwd"));
- list.add(admin);
- }
- ResultSet rs2=pstm.executeQuery("select count(*) from admin");
- int total=0;
- if(rs2.next()){
- total=rs2.getInt(1);
- }
- pageModel=new PageModel();
- pageModel.setPageNo(pageNo);
- pageModel.setPageSize(pageSize);
- pageModel.setTotalRecords(total);
- pageModel.setList(list);
- } catch (SQLException e) {
- e.printStackTrace();
- }finally{
- DbUtil.close(conn);
- DbUtil.close(pstm);
- DbUtil.close(rs);
- }
- return pageModel;
- }
- public static void main(String[] args) {
- PageModel pageModel=Client.findAdmins(2,4);
- List<Admin> list=pageModel.getList();
- for(Admin a:list){
- System.out.print("ID:"+a.getId()+",用户名:"+a.getName()+",密码:"+a.getPassword());
- System.out.println();
- }
- System.out.print("当前页:"+pageModel.getPageNo()+" ");
- System.out.print("共"+pageModel.getTotalPages()+"页 ");
- System.out.print("首页:"+pageModel.getTopPageNo()+" ");
- System.out.print("上一页:"+pageModel.getPreviousPageNo()+" ");
- System.out.print("下一页:"+pageModel.getNextPageNo()+" ");
- System.out.print("尾页:"+pageModel.getBottomPageNo()+" ");
- System.out.print("共"+pageModel.getTotalRecords()+"条记录");
- System.out.println();
- }
- }
这样分页效果就实现了,我们要实现分页效果,只要传入相应的参数和相应的数据库执行语句即可实现,希望大家能灵活运用。
java常用公共代码二之分页代码的实现的更多相关文章
- Java 常用API(二)
目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar ...
- java基础之JDBC二:原生代码基础应用
JDBC的基础应用CURD: 增删改 public void noQuery() { Connection conn = null; Statement stat = null; try { //注册 ...
- Java常用类(二)String类详解
前言 在我们开发中经常会用到很多的常用的工具类,这里做一个总结.他们有很多的方法都是我们经常要用到的.所以我们一定要把它好好的掌握起来! 一.String简介 1.1.String(字符串常量)概述 ...
- java常用设计模式十二:命令模式
一.概述 定义:命令(Command)模式又叫作动作(Action)模式或事务(Transaction)模式,是一种对象的行为模式.将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对 ...
- java常用设计模式总览
一.java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组 ...
- java提高篇(十二)-----代码块
在编程过程中我们可能会遇到如下这种形式的程序: public class Test { { //// } } 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起, ...
- 分页技巧_改进JSP页面中的公共分页代码_实现分页时可以有自定义的过滤与排序条件
分页技巧__改进JSP页面中的公共分页代码 自定义过滤条件问题 只有一个url地址不一样写了很多行代码 public>>pageView.jspf添加 分页技巧__实现分页时可以有自定义的 ...
- 分享非常有用的Java程序 (关键代码) (二)---列出文件和目录
原文:分享非常有用的Java程序 (关键代码) (二)---列出文件和目录 File dir = new File("directoryName"); String[] child ...
- “全栈2019”Java第四十二章:静态代码块与初始化顺序
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
随机推荐
- 使用CSS更改图标的颜色
我们经常在很多网站上见到更改网站的主题时,图标的颜色也改变了,我们总是觉的这一项功能非常伟大,因为我们知道使用CSS是无法完成更改图片的颜色的.那么,网站上随心所欲的图标颜色是采用N多个图片不断的切换 ...
- 【转】使用 python IDLE 自带的 debuger 进行调试
IDLE自带了调试器(虽然不怎么使吧). 关于如何在 IDLE 中进行调试网上的教程讲的很模糊,于是自己整理了一下,和大家分享~ 第一步:打开python shell,并在shell中打开debuge ...
- java 数组冒泡排序、转置(降序)
1.java 数组冒泡排序 排序的基本原理(升序): 原始数据: 2 .1 .9 .0 .5 .3 .7 .6 .8: 第一次排序: 1 .2 .0 .5 .3 .7 .6 .8 .9 : 第二次 ...
- Android之 内容提供器(1)——使用内容提供器访问其它程序共享的数据
(下面内容是阅读郭霖大神的<第一行代码>总结的) 1 概述 内容提供器是Android实现跨程序共享数据的标准方式. 内容提供器的的使用方法有两种, 一是使用已有的内容提供器对其他程序的数 ...
- Entity Framework(实体框架 EF)
什么是Entity Framework呢(下面简称EF)? EF(实体框架)是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架.ORM(对象关系映射框架):指的是面向 ...
- BZOJ1030 [JSOI2007]文本生成器(AC自动机)
做到了AC自动机的题目,复习了一下AC自动机,学习了黄学长代码,这个题呢,我们可以模拟在AC自动机上的操作,dp数组f[i][j]表示前i个字符,我们在AC自动机上处在j号节点的方案数. 我们可以计算 ...
- BZOJ4554 HEOI2016游戏
网络流. 我一开始傻傻的将每条边与每一列连边,边权为联通块树,但是这样做是错的因为我们就在跑网络流中会忽略掉边和列的关系. 我们在做网络流题时一定要注意题目中给出的限制条件,一定要以限制条件建图!!! ...
- luoguP3750 [六省联考2017]分手是祝愿 概率期望DP + 贪心
...........真的神状态了,没办法去想的状态................... 考试的时候选择$50$分贪心+$15$分状压吧,别的点就放弃算了........ 令$f[i]$表示从最小步 ...
- [BZOJ4556][TJOI2016&&HEOI2016]字符串(二分答案+后缀数组+RMQ+主席树)
4556: [Tjoi2016&Heoi2016]字符串 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1360 Solved: 545[S ...
- 如何解决The underlying provider failed on Open问题
转自codeproject,找了半天解决办法,这个最靠谱. 我数据库用的EF做ORM,在vs里面测试的时候不会出现这个错误,用IIS就出错了.解决方法如下 Solution for "The ...