Java-MySQL之自定义DBCPUtils连接池工具类

通过连接池方式,用户无需获取数据库Connction连接实例,即可操作数据库,效率提高

DBCPUtils连接池工具类

package com.java.week08;


import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

/*
 * 获取数据库连接,返回一个DataSource实例对象
 */
public class DBCPUtils {
	//静态成员变量
	private static BasicDataSource dataSource = new BasicDataSource();
	
	/*
	 * 配置文件中的数据库信息
	 */
	private static String driver = null;
	private static String url = null;
	private static String username = null;
	private static String password = null;
	
	//公有方法,返回一个DataSource实例对象
	public static DataSource getDataSource(){
		return dataSource;
	}
	
	//静态方法,连接数据库
	static{
		readContext();
		/*
		 * 必须设置参数
		 * 通过dataSource设置连接数据库信息
		 */
		dataSource.setDriverClassName(driver);
		dataSource.setUrl(url);
		dataSource.setUsername(username);
		dataSource.setPassword(password);
		/*
		 * 可选设置参数
		 * 通过dataSource设置连接池信息
		 */
		dataSource.setInitialSize(1);//初始化连接数
		dataSource.setMaxActive(1); //最大连接数量
		dataSource.setMaxIdle(1);   //最大空闲数
		dataSource.setMinIdle(1);   //最小空闲数

	}
	
	//读取配置文件中的数据库信息
	private static void readContext(){
		InputStream in = DBCPUtils.class.getClassLoader().getResourceAsStream("db.properties");//获取配置文件流
		Properties pros = new Properties();//持久化类
		try {
			pros.load(in);
			driver = pros.getProperty("driver");
			url = pros.getProperty("url");
			username = pros.getProperty("username");
			password = pros.getProperty("password");
		} catch (IOException e) {
			throw new RuntimeException(e + "配置文件读取失败!");
		}
	}
}

测试类

package com.java.week08;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;

/*
 * 无需创建连接,即可完成对数据库的操作
 * 采用连接池,效率很高
 */
public class DBCPTest {

	public static void main(String[] args) {
		insert();
		select();
	}
	
	private static QueryRunner qr = new QueryRunner(DBCPUtils.getDataSource()); 
	
	/*
	 * 定义两个方法,一个插入,一个查询
	 */
	
	//数据表插入
	public static void insert(){
		String sql = "INSERT INTO student(sname,sage,sscore,sclassroom,sex) VALUES(?,?,?,?,?)";
		Object[] param = {"mk",24,67,"1703","男"};
		try {
			int update = qr.update(sql, param);
			System.out.println(update);
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException("数据插入失败!");
		}
	}
	
	//数据表查询
	public static void select(){
		String sql = "SELECT * FROM student";
		try {
			List<Object[]> query = qr.query(sql, new ArrayListHandler());
			for (Object[] objects : query) {
				for (Object object : objects) {
					System.out.print(object + " ");
				}
				System.out.println();
			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException("数据查询失败!");
		}
	}
}

测试结果


猜你喜欢

转载自blog.csdn.net/mmake1994/article/details/80725799
今日推荐