案例准备
数据库创建表 account表
CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(40),
money FLOAT
)CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO account(NAME,money) VALUES('aaa',1000);
INSERT INTO account(NAME,money) VALUES('bbb',1000);
INSERT INTO account(NAME,money) VALUES('ccc',1000);
工程目录结构
导入C3P0Util、c3p0-config.xml
C3P0Util.java
/**
* C3P0
*
*/
public class C3P0Util {
private static ComboPooledDataSource ds = new ComboPooledDataSource();
public static DataSource getDataSource(){
return ds;
}
public static Connection getConnection() throws SQLException{
return ds.getConnection();
}
public static void main(String[] args) {
System.out.println(getDataSource());
}
}
c3p0-config.xm :配置数据源 内容如下
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/spring</property>
<property name="user">root</property>
<property name="password">1234</property>
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">20</property>
</default-config>
</c3p0-config>
day02_eesy_dbassit
工程结构
dbassit包下的DBAssit.java 实现 update、query方法,
通过dao层调用传入参数:sql语句,封装结果集、实际赋值参数,执行pstm.executeQuery();、pstm.executeUpdate();操作对数据库进行实际的增删改、查询操作。
/**
* 执行sal 和
* 封装的工具类
*/
public class DBAssit {
private DataSource dataSource;
public DBAssit(DataSource dataSource) {
this.dataSource = dataSource;
}
/**
* 执行增删改的方法
* @param sql 传入的 sql 语句内参数的数量等于 ? 的个数
* @param params 传入的实际参数数据值
* @return 受影响行数
*/
public int update(String sql,Object... params){
Connection conn = null;
PreparedStatement pstm = null;
try {
//1.得到连接
conn = dataSource.getConnection();
//2.使用连接和参数的sql语句创建预处理对象
pstm = conn.pre