C3P0(连接池)

在这里插入图片描述在这里插入图片描述

C3p0实现curd

有3个方法
QueryRunner curd 的核心
1.查询的结果是:对象的集合: queryRunner.query(sql, new BeanListHandler<类名>(类名.class)

2.查询的结果是一个对象:qRunner.query(sql,new BeanHandler<类名>(类名.class),参数);(sql语句中需要的参数,如果没有就不要…)

3.查询数量: Long num= (Long) qRunner.query(sql,new ScalarHandler(参数),stuno,pwd);//参数写法1编写获取值的索引 写法2 列名

4.增删改: qRunner.update(sql, 参数1, 参数2…);

怎么使用C3P0

a)导入jar

在这里插入图片描述

b)添加c3p0的配置文件

创建source folder的文件夹添加配置文件(配置文件的名字c3p0-config.xml 是固定的,不能瞎写)
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
   <default-config>
   	<property name="user">root</property>
   	<property name="password">root</property>
   	<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/7505test
   	</property>
   	<property name="driverClass">com.mysql.jdbc.Driver</property>
   	<!-- 连接池初始化的时候的连接数 -->
   	<property name="initialPoolSize">5</property>
   	<!-- 连接池中连接的最大个数 -->
   	<property name="maxPoolSize">20</property>
   	<!-- 用户获得连接Connection的时候,如果有连接就获得,没有就等待的时间,如果超时就报异常 -->
   	<property name="maxIdleTime">5000</property>
   	<!-- 连接池中连接的最小个数 -->
   	<property name="minPoolSize">5</property>
   </default-config>
</c3p0-config>
c)从连接池中获取数据源

可以编写工具类(专门获取连接对象)
包名 com.xx.utils
在这里插入图片描述

import javax.sql.DataSource;

import org.apache.commons.dbutils.QueryRunner;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Util {
	//queryRunner DButils框架提供通过C3P0操作数据库的一个对象
private static  QueryRunner  queryRunner;

public static QueryRunner getQueryRunner() {
	//dataSource 数据源
	DataSource  dataSource=new ComboPooledDataSource();
	queryRunner=new QueryRunner(dataSource);
	
	return queryRunner;
}
	
}
d)Dao层通过C3P0实现查询
public class SubjectDaoMySqlImpl implements SubjectDao {

	private QueryRunner queryRunner;

	@Override
	public List<Subject> querySubjects() {
		// 贾琏欲执事-->很繁琐--》使用c3p0进行改写
		queryRunner = C3P0Util.getQueryRunner();
		String sql = "select  * from  `subject` ";
		List<Subject> subjects=null;
		// 直接将查询的结果转为 对象
		try {
			//实体类SUbject的属性名需要与列名一致
			 subjects = queryRunner.query(sql, new BeanListHandler<Subject>(Subject.class));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return subjects;
	}

}
业务逻辑层与界面层的内容不变

猜你喜欢

转载自blog.csdn.net/weixin_43951534/article/details/89458810
今日推荐