JDBC之分页查询

 

Select * from User limit   10,10;      //第一个10是偏移量(从第11条来看),第二个10是显示每页10个数据。

package JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Arrays;
import java.util.Scanner;

/*
 *   分页
 */
public class Demo15 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入要查看的页数:");
		int page = scan.nextInt();
		System.out.println("请输入一页显示的条数:");
		int pageSize = scan.nextInt();
		
		Connection conn = null;
		try {
			conn = DBUtil3.getConnection();
			String sql = "select * from user limit ?,?";
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.setInt(1, (page-1)*pageSize);    //偏移量
			ps.setInt(2, pageSize);           //每页的条数
			
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				System.out.println(rs.getString("username"));
			}

			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			DBUtil3.close(conn);
		}
		
	}
}

 

下面是一个数据库工具类,有数据库驱动的加载,建立连接,可以方便我们后续的操作.

package JDBC;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

/*
 * 数据库工具类
 */


import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

/*
 * 数据库工具类
 */
public class DBUtil3 {
	private static BasicDataSource ds;
	
	//静态代码块读取配置文件
	static {
		try {
			//读取配置文件
			Properties prop = new Properties();
			//获取配置文件的输入流
			InputStream is = DBUtil3.class.getClassLoader().getResourceAsStream("./JDBC/db.properties");
			//加载配置文件
			prop.load(is);
			//关闭输入流
			is.close();
			
			//获取配置参数
			String driver = prop.getProperty("driver");
			String url = prop.getProperty("url");
			String user = prop.getProperty("user");
			String password = prop.getProperty("password");
//			#初始连接数
			int initialSize=Integer.parseInt(prop.getProperty("initialSize"));
//			#最大连接数
			int maxActive=Integer.parseInt(prop.getProperty("maxActive"));
//			#最大等待时间 毫秒
			int maxWait=Integer.parseInt(prop.getProperty("maxWait"));
//			#最大空闲连接数
			int maxIdle=Integer.parseInt(prop.getProperty("maxIdle"));
//			#最小空闲连接数
			int minIdle=Integer.parseInt(prop.getProperty("minIdle"));
			
			//初始化连接池
			ds = new BasicDataSource();
			ds.setDriverClassName(driver);
			ds.setUrl(url);
			ds.setUsername(user);
			ds.setPassword(password);
			ds.setInitialSize(initialSize);
			ds.setMaxActive(maxActive);
			ds.setMaxWait(maxWait);
			ds.setMaxIdle(maxIdle);
			ds.setMinIdle(minIdle);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	//获取连接
	public static Connection getConnection() {
		Connection conn = null;
		try {
			//获取连接
			conn = ds.getConnection();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	//释放资源
	public static void close(Connection conn) {
		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

下面是db.properties,写了要加载哪个驱动,url是哪个,相当于xml.

#key=value
#驱动
driver=com.mysql.jdbc.Driver
#url
#url=jdbc:mysql://localhost:3306/ssm01
url=jdbc:mysql://localhost:3306/employee
#user
user=root
#password
password=root
#初始连接数
initialSize=5
#最大连接数
maxActive=30
#最大等待时间(毫秒)
maxWait=5000
#最大空闲连接数
maxIdle=10
#最小空闲连接数
minIdle=5

 

你可能感兴趣的:(JDBC之分页查询)