JdbcTemplate简介
JdbcTemplate类似DBUtils,用于操作jdbc的工具类,它需要依赖于连接池DataSource(数据源)。
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API ODBC(Open Database Connectivity)开放数据库连接,是微软公司提供的一组对数据库访问的标准API。
DBCP(DataBase Connection pool)数据库连接池,是java数据库连接池的一种,由Aspect开发。
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展,目前使用它的开源项目由Hibernate、Spring等。
C3P0于DBCP的区别
C3P0有自动回收空闲连接功能
DBCP没有自动回收空闲连接功能
常规操作,因为之前有篇关于JdbcTemplate的文章,如果读者对JdbcTemplate不是很了解,可以先看那篇文章。JDBC进阶-数据库连接池技术以及jdbcTemplate
配置DBCD
数据源不由自己创建,由Spring创建
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/hibernate_day03?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="userDao" class="com.zzx.dao.impl.UserDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
配置C3P0
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/hibernate_day03?characterEncoding=UTF-8"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="userDao" class="com.zzx.dao.impl.UserDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
使用JdbcDaoSupport
public class UserDao1Impl extends JdbcDaoSupport implements IUserDao {
@Override
public void save(User user) {
String sql = "insert into t_user(username,password,age,sex) values (?,?,?,?)";
Object[] args = new Object[]{user.getUsername(),user.getPassword(),user.getAge(),user.getSex()};
this.getJdbcTemplate().update(sql,args);
}
@Override
public void update(User user) {
String sql = "insert into t_user(username,password,age,sex) values (?,?,?,?)";
Object[] args = new Object[]{user.getUsername(),user.getPassword(),user.getAge(),user.getSex()};
this.getJdbcTemplate().update(sql,args);
}
@Override
public void delete(String username) {
String sql = "delete t_user where username=?";
this.getJdbcTemplate().execute(sql);
}
}
数据库连接Properties的配置
src目录下创建db.properties文件
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/hibernate_day03?characterEncoding=UTF-8
user=root
password=123456
beans.xml文件配置 关键是下面第一行代码,找到路径并把数据赋值给dataSource
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClasss}"/>
<property name="jdbcUrl" value="${jdbcUrl}"/>
<property name="user" value="${user}"/>
<property name="password" value="${password}"/>
</bean>