JDBC+分页--【DRP】

JDBC

package com.bjpowernode.drp.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;


	//JDBC工具类
	public class DbUtil {
		
		/*
		 *采用单例模式 取得Connection
		 * @return
		 * */
		public static Connection getConnection(){
		
	/*	Connection conn=null;
		try{
			
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url="jdbc:oracle:thin:@localhost:1521:orcl";
			String username="wm";
			String password="A123456a";
			conn=DriverManager.getConnection(url,username,password);
			
		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}catch(SQLException e){
			e.printStackTrace();
		}
		return conn;*/
			
			Connection conn=null;  //数据连接为空
			try{
				JdbcConfig jdbcConfig=XmlConfigReader.getInstance().getJdbcConfig();//获得数据库配置文件
				Class.forName(jdbcConfig.getDriverName());//加载数据库驱动程序	
				//使用jdbc连接数据库的地址,用户名,密码
				conn=DriverManager.getConnection(jdbcConfig.getUrl(),jdbcConfig.getUserName(),jdbcConfig.getPassword());
				
			}catch(ClassNotFoundException e){
				e.printStackTrace();
			}catch(SQLException e){
				e.printStackTrace();
			}
			return conn;
	
	}
		
	//关闭数据库连接
	public static  void close(Connection conn){
		if(conn !=null){
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}	
	//关闭数据库程序集
	public static void close(ResultSet rs){
		
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	//关闭SQL编译集
	public static void close(PreparedStatement pstmt){
		if(pstmt!=null){
			try {
				pstmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	//测试类
	public static void main(String[] args){
		System.out.println(DbUtil.getConnection());
	}
}

 

 

分页:

/**
	 * 分页查询
	 * @param pageNo 第几页
	 * @param pageSize 每页多少条数据
	 * @return pageModel
	 */
	public PageModel findUserList(int pageNo, int pageSize) {
		StringBuffer sbSql = new StringBuffer();	//定义一个StringBuffer,采用append方法,追加内容到当前StringBuffer的末尾
		//拼接的SQL语句
		sbSql.append("select user_id, user_name, password, contact_tel, email, create_date ")
			.append("from ")
			.append("( ")
			.append("select rownum rn, user_id, user_name, password, contact_tel, email, create_date ")
			.append("from ")
			.append("( ")
			.append("select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id <> 'root' order by user_id ")
			.append(")  where rownum <= ? ")
			.append(")  where rn > ? ");
		
		Connection conn = null;         //定义静态的数据库连接
		PreparedStatement pstmt = null; //创建预编译SQL语句
		ResultSet rs = null;			//定义结果集
		PageModel pageModel = null;		//定义页面信息实体
		try {
			conn = DbUtil.getConnection(); 	   				//获取Connection 					
			pstmt = conn.prepareStatement(sbSql.toString());//执行SQL语句
			pstmt.setInt(1, pageNo * pageSize);				//第一个?代表最后一页能包含的所有的条数
			pstmt.setInt(2, (pageNo - 1) * pageSize);		//第二个?代表倒数第二页包含的所有的条数
			
			//executeQuery返回
			//execute,返回boolean值,表名执行该SQL语句是否返回Result
			//executeUpdate,返回值是一个整数,指示受影响的行数
			rs = pstmt.executeQuery();//执行查询				
			
			
			List userList = new ArrayList();						//实例化一个数组
			while (rs.next()) {										//循环遍历查询结果集
				User user = new User();
				user.setUserId(rs.getString("user_id"));			//用户id进行赋值
				user.setUserName(rs.getString("user_name"));		//给用户姓名进行赋值
				user.setPassword(rs.getString("password"));			//给用户密码进行赋值
				user.setContactTel(rs.getString("contact_tel"));	//给用户电话进行赋值
				user.setEmail(rs.getString("email"));				//给Email进行赋值
				user.setCreateDate(rs.getTimestamp("create_date"));	//给创建日期进行赋值
				userList.add(user);									//像集合列表中添加对象
			}
			pageModel = new PageModel();					 	//实例化分页实体
			pageModel.setList(userList);					 	//给结果集赋值
			pageModel.setTotalRecords(getTotalRecords(conn));	//记录数
			pageModel.setPageSize(pageSize);					//数据条数
			pageModel.setPageNo(pageNo);						//多少页
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			DbUtil.close(rs);	//关闭记录集
			DbUtil.close(pstmt);//关闭SQL数据集
			DbUtil.close(conn);	//关闭SQL连接
		}
		return pageModel;		//返回分页实体
	}
	
	/**
	 * 取得总记录数
	 * @param conn
	 * @return
	 */
	/**
	 * 取得总记录数
	 * @param conn
	 * @return
	 */
	private int getTotalRecords(Connection conn) 
	throws SQLException {
		//查询所有用户id<>root的条数
		String sql = "select count(*) from t_user where user_id <> 'root'";
		PreparedStatement pstmt = null;			//定义SQL预编译集
		ResultSet rs = null;					//定义记录集
		int count = 0;							//定义个数
		try {
			pstmt = conn.prepareStatement(sql);	//执行SQL语句
			rs = pstmt.executeQuery();			//执行查询
			rs.next();							//遍历记录集
			count = rs.getInt(1);				//获取第一列的值
		}finally {
			DbUtil.close(rs);	//关闭数据集
			DbUtil.close(pstmt);//关闭SQL记录集
		}
		return count;
	}

 

posted @ 2015-12-07 16:06  ZeroWM  阅读(156)  评论(0编辑  收藏  举报