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;
	}
时间: 2024-09-30 22:57:49

JDBC+分页--【DRP】的相关文章

笔记: JDBC分页&amp;监听器

JDBC分页: * 概述: * 定义:将一页显示的内容,分成两页或两页以上来显示. * 分类: * 物理分页: * 就是在查询数据库记录时,已经实现分页. * 这种分页技术一定是数据库提供.(不同数据库实现方式不同) * 逻辑分页: * 就是查询数据库所有记录,然后在通过Java代码实现分页效果. * 逻辑分页与数据库产品本身是无关的. * 物理分页: * MySQL的Limit: * 语法:SELECT * FROM 表名 LIMIT 位置偏移量,行数; * 问题:Limit是否可以实现分页效

jdbc 分页

连接数据库 public class DbUtil { private String driver = "oracle.jdbc.OracleDriver"; private String url = "jdbc:oracle:thin:@localhost:1521:ORCL"; private String user = "system"; private String password = "FengZe2012"; p

JavaWeb之JDBC分页/监听器(十六)

多表关联操作 1. 一对多(客户与订单表) # 一对多(客户与订单表) 0. C3P0工具类 1. 建domain类与之对应要建立相应的表结构 Customer表 private int id; private String name; private List<Orders> orders = new ArrayList<Orders>(); Orders表 private int id; private String num; private float money; priv

javaweb笔记全套

Lesson 1 一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Project) 3) 建包 建类 2. 快捷键 alt + / : 代码自动补齐,需要配置的 打开preferences(首选项), 搜keys,打开快捷键配置面板 搜 alt+/ ,取消绑定 搜 content assist ,取消原先的绑定,配置成alt+/ ctrl+1: 错误自动修复, 注意,

java各种概念 Core Java总结

Base: OOA是什么?OOD是什么?OOP是什么?{ oo(object-oriented):基于对象概念,以对象为中心,以类和继承为构造机制,来认识,理解,刻画客观世界和设计,构建相应的软件系统的一门方法;本意----模拟人类的思维方式,使开发,维护,修改更加容易 - ooa(object-oriented analysis):强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是 对管理业务现状和方法的分析-------其实就是进一步对oo进行细化,初步得出

崔希凡JavaWeb笔记day19-day21(2016年10月4日17:38:58)

难点:jdbc分页查询,以及filter的几个案例 笔记分享如下 链接:http://pan.baidu.com/s/1o8NbI3o 密码:4fnc

javaweb笔记分享

Lesson 1 一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Project) 3) 建包 建类 2. 快捷键 alt + / : 代码自动补齐,需要配置的 打开preferences(首选项), 搜keys,打开快捷键配置面板 搜 alt+/ ,取消绑定 搜 content assist ,取消原先的绑定,配置成alt+/ ctrl+1: 错误自动修复, 注意,

mybatis+Druid连接池的问题

首先让我来描述问题 我有个系统是基于springmvc+mybatis+mysql+druid的,启动系统刚开始用没有问题,但是用着用着系统表象就是卡死 分析: 1:通过表象是不是有可能数据库锁表了,通过jvm的jstack -l pid(进程id) 如何得到进程id呢?--到jdk安装的bin目录执行 jps命令得到pid 打印出堆栈信息 此时没办法只能看druid的源码找到 此时要引起注意,看源码的时候一点要注意if条件的地方,此时我考虑是不是maxWait没有配置默认为0,此时我到自己的配

DB2、ORACLE SQL写法的主要区别

说实话,ORACLE把国内的程序员惯坏了,代码中的SQL充斥着大量ORACLE特性,几乎没人知道ANSI的标准SQL是什么样子,导致程序脱离了ORACLE根本无法运行,还好随着hibernate的流行,情况有了很大改观 DB2作为众多国际大客户的选择(据说世界500强80%用DB2,前100强更是全部采 用DB2),在国内真的很不流行,属于小众数据库,但是没办法,现在的项目要用DB2,所以不得不面对熟悉ORACLE的开发同事们写出的“ORACLE 版代码”,众多的兼容性问题搞得很是头大,遂整理了