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;
}
}
业务逻辑层与界面层的内容不变