码迷,mamicode.com
首页 > 其他好文 > 详细

通用分页(一)

时间:2019-06-21 09:32:58      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:==   put   mit   isp   bsp   ebean   col   try   string   

核心思路:将上一次 的查询请求再发送一次,这一次改变页码

PageBean 

private int page;  页数

private int rows;   行数

private boolean pagination; 是否分页

private int total; 总行数;

package com.page;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;

import com.dao.impl.BaseDao;

public class PageDao<E> extends BaseDao {
	public List<Boolean> executeQueryPage(String sql, PageBean pageBean, ICallBack<E> iCallBack) {
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			// 得到sql的总行数
			con = getcon();
			ps = con.prepareStatement(sql);
			rs = ps.executeQuery();
			pageBean.setTotal(rs.getString(1));
			close(ps, rs);
			// 调用分页sql语句
			ps = con.prepareStatement(getPageSql(sql, pageBean));
			rs = ps.executeQuery();
			return (List<Boolean>) iCallBack.forEach(rs);
		} catch (Exception e) {
			throw new RuntimeException(e);
		} finally {
			close(con, ps, rs);
		}

	}

	/**
	 * 返回总行数
	 * 
	 * @param sql
	 * @return
	 */
	private String getCountSql(String sql) {
		return "select count (*) from (" + sql + ") t1";
	}

	/**
	 * 返回分页语句
	 * 
	 * @param sql
	 * @param pageBean
	 * @return
	 */
	private String getPageSql(String sql, PageBean pageBean) {
		int page = pageBean.getPage();
		int rows = pageBean.getRows();
		return sql + "limit" + (page - 1) * rows + "." + rows;
	}
}

  

  1 package com.dao.impl;
  2 
  3 import java.io.InputStream;
  4 import java.sql.Connection;
  5 import java.sql.DriverManager;
  6 import java.sql.PreparedStatement;
  7 import java.sql.ResultSet;
  8 import java.util.Properties;
  9 
 10 /**
 11  * 连接数据库操作基本类
 12  * 
 13  * @author xyls
 14  *
 15  */
 16 
 17 public class BaseDao {
 18 
 19     private static Properties properties = null;
 20     static {
 21         if (properties == null) {
 22             InputStream is = BaseDao.class.getResourceAsStream("/config.properties");
 23             properties = new Properties();
 24             try {
 25                 properties.load(is);
 26                 Class.forName(properties.getProperty("driver"));
 27             } catch (Exception e) {
 28                 throw new RuntimeException(e);
 29             }
 30         }
 31     }
 32 
 33     /**
 34      * 获取数据库连接对象
 35      * 
 36      * @return
 37      */
 38     public Connection getcon() {
 39         try {
 40             return DriverManager.getConnection(properties.getProperty("url"), properties.getProperty("user"),
 41                     properties.getProperty("pwd"));
 42 
 43         } catch (Exception e) {
 44             throw new RuntimeException(e);
 45         }
 46     }
 47 
 48     /**
 49      * 关闭数据库的连接
 50      * 
 51      * @param con
 52      * @param ps
 53      */
 54     public void close(Connection con, PreparedStatement ps) {
 55         close(con, ps, null);
 56     }
 57 
 58     /**
 59      * 关闭数据库的连接
 60      * 
 61      * @param con
 62      * @param ps
 63      */
 64     public void close(PreparedStatement ps, ResultSet rs) {
 65         close(null, ps, rs);
 66     }
 67 
 68     /**
 69      * 关闭数据库的连接
 70      * 
 71      * @param con
 72      * @param ps
 73      * @param rs
 74      */
 75     public void close(Connection con, PreparedStatement ps, ResultSet rs) {
 76         try {
 77             if (rs != null) {
 78                 rs.close();
 79             }
 80             if (ps != null) {
 81                 ps.close();
 82             }
 83             if (con != null) {
 84                 con.close();
 85             }
 86         } catch (Exception e) {
 87             throw new RuntimeException(e);
 88         }
 89     }
 90 
 91     public int a(String sql, Object... objects) {
 92         Connection con = null;
 93         PreparedStatement ps = null;
 94         try {
 95             con = getcon();
 96             ps = con.prepareStatement(sql);
 97             for (int i = 0; i < objects.length; i++) {
 98                 if (objects[i] != null) {
 99                     ps.setObject((i + 1), objects[i]);
100                 }
101             }
102             return ps.executeUpdate();
103         } catch (Exception e) {
104             throw new RuntimeException(e);
105         } finally {
106             close(con, ps);
107         }
108     }
109 }
 1 package com.page;
 2 
 3 /**
 4  * 分页工具类
 5  *
 6  */
 7 public class PageBean {
 8 
 9     private int page = 1;// 页码
10 
11     private int rows = 10;// 页大小
12 
13     private int total = 0;// 总记录数
14 
15     private boolean pagination = true;// 是否分页
16 
17     public PageBean() {
18         super();
19     }
20 
21     public int getPage() {
22         return page;
23     }
24 
25     public void setPage(int page) {
26         this.page = page;
27     }
28 
29     public int getRows() {
30         return rows;
31     }
32 
33     public void setRows(int rows) {
34         this.rows = rows;
35     }
36 
37     public int getTotal() {
38         return total;
39     }
40 
41     public void setTotal(int total) {
42         this.total = total;
43     }
44 
45     public void setTotal(String total) {
46         this.total = Integer.parseInt(total);
47     }
48 
49     public boolean isPagination() {
50         return pagination;
51     }
52 
53     public void setPagination(boolean pagination) {
54         this.pagination = pagination;
55     }
56 
57     /**
58      * 获得起始记录的下标
59      * 
60      * @return
61      */
62     public int getStartIndex() {
63         return (this.page - 1) * this.rows;
64     }
65 
66     @Override
67     public String toString() {
68         return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
69     }
70 
71 }
 1 package com.dao.impl;
 2 
 3 import java.sql.ResultSet;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6 
 7 import com.dao.IBookDao;
 8 import com.entity.BookBean;
 9 import com.page.ICallBack;
10 import com.page.PageBean;
11 import com.page.PageDao;
12 
13 public class BookDaoImpl extends PageDao<BookBean> implements IBookDao {
14 
15     @Override
16     public List<Boolean> findBookListByBookNamePage(PageBean pageBean, BookBean Bean) {
17         StringBuffer sb=new StringBuffer();
18         sb.append("select * from t_book");
19         if (Bean.getBookName().length()>0) {
20             sb.append(" where bookname like ‘%"+Bean.getBookName()+"%‘");
21         }
22         return executeQueryPage(sb.toString(), pageBean, new ICallBack<BookBean>() {
23             List<BookBean> booklist=new ArrayList<>();
24             @Override
25             public List<BookBean> forEach(ResultSet rs) throws Exception {
26                 while(rs.next()) {
27                     BookBean b=new BookBean();
28                     b.setId(rs.getInt("id"));
29                     b.setBookName(rs.getString("bookname"));
30                     b.setPrice(rs.getDouble("price"));
31                     b.setBooktype(rs.getInt("booktype"));
32                     b.setCreateDate(rs.getDate("createdate"));
33                     booklist.add(b);
34                 }
35                 return booklist;
36                 
37             }
38         });
39     }
40 
41     @Override
42     public int add(BookBean bookBean) {
43         // TODO Auto-generated method stub
44         return executeQueryPage(sql, pageBean, iCallBack)
45     }
46 
47 }

 

通用分页(一)

标签:==   put   mit   isp   bsp   ebean   col   try   string   

原文地址:https://www.cnblogs.com/omji0030/p/11062502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!