重构JDBCUtils

1.上一节我们用到JDBC并设置了连接数据库必要的四个变量:dreiver url user password

在实际应用中,JDBC可设置的还有很多属性如最大连接数量,连接等待时间等,我们可以自己写一个JDBC的工具类实现对JDBC属性的设置(重构JDBCUtils类)

package cn.itheima.gjp.tools;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;

public class JDBCUtils {//Java中的静态常量命名规范要大写
	public static final String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";
	public static final String URL = "jdbc:mysql://localhost:3306/gjp";
	public static final String USERNAME = "root";
	public static final String PASSWORD = "root";
	
	private static final int MAX_IDLE = 3;
	private static final long MAX_WAIT = 5000;
	private static final int MAX_ACTIVE = 5;
	private static final int INITIAL_SIZE = 10;
	
	private static BasicDataSource dataSource = new BasicDataSource();
	//创建BasicDataSource对象
	static {//静态代码块
	//有些代码必须在项目启动的时候就执行,这种代码是主动执行的
	//(当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化)
		dataSource.setDriverClassName(DRIVER_CLASS_NAME);
		dataSource.setUrl(URL);
		dataSource.setUsername(USERNAME);
		dataSource.setPassword(PASSWORD);
			
		dataSource.setMaxActive(MAX_IDLE);
		dataSource.setMaxWait(MAX_WAIT);
		dataSource.setMaxActive(MAX_ACTIVE);
		dataSource.setInitialSize(INITIAL_SIZE);
	}
	
	public static DataSource getDataSource() {//注意,此处方法类型是接口,返回的是实现类
		return dataSource;//调用该方法接收时要用接口接收
	}
}

注意,此处方法类型是接口,返回的是实现类,调用该方法接收时要用接口接收

//使用JDBCUtils代码

		DataSource source2 = JDBCUtils.getDataSource();//创建接口对象,实际是接口的实现类对象
		QueryRunner qr2 = new QueryRunner(source2);
		
		try {// ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
			List<Object[]> list = qr.query("SELECT * FROM STUDENT", new ArrayListHandler());
			for (Object[] objects : list) {
				for (Object object : objects) {
					System.out.print(object);
				}
				System.out.println();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

注意:接口不能实例化 但可以创建该接口的实例化对象

接口可以创建引用,也就是说接口可以用它这个类型去声明一个变量的引用,然后用一个接口实现类new一个变量,赋值给这个引用,然后用这个引用去调用接口的实现类的方法既可以实现多态。
——某论坛

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值