JdbcTemplate

JdbcTemplate:
导入jar包:
5个基本包+两个实现包+c3p0+dbcp:
实现包:
springJdbc操作:spring-framework-3.2.0.RELEASE\libs-->spring-jdbc-3.2.0.RELEASE.jar
spring事务:spring-framework-3.2.0.RELEASE\libs-->spring-tx-3.2.0.RELEASE.jar
c3p0:spring-framework-3.0.2dependencies\com.mchange.c3p0\com.springsource.com.mchange.v2.c3p0\0.9.1.2-->com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
dbcp:
spring-framework-3.0.2dependencies\org.apache.commons\com.springsource.org.apache.commons.dbcp\1.2.2.osgi-->com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
spring-framework-3.0.2dependencies\org.apache.commons\com.springsource.org.apache.commons.pool\1.5.3-->com.springsource.org.apache.commons.pool-1.5.3.jar

api的使用:
        数据源(连接池)的创建--dbcp
  BasicDataSource dataSource = new BasicDataSource();
  dataSource.setDriverClassName("com.mysql.jdbc.Driver");
  dataSource.setUrl("jdbc:mysql://localhost:3306/dbname");
  dataSource.setUsername("root");
  dataSource.setPassword("1234");
创建模板:
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
  jdbcTemplate.setDataSource(dataSource);
使用模板:
  jdbcTemplate.update("insert into t_user(username,password,age) values(?,?,?)", "jack","1234",18);
 }

配置dbcp:
首先实现dao:
 spring注入模板实例
 private JdbcTemplate jdbcTemplate;
 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
  this.jdbcTemplate = jdbcTemplate;
 }
 public User findById(Integer id){
  String sql = "select * from t_user where id = ?";
  //使用 ParameterizedBeanPropertyRowMapper 完成数据封装, 数据库表的字段必须javabean属性 一致
  RowMapper<User> rowMapper = ParameterizedBeanPropertyRowMapper.newInstance(User.class);
  return jdbcTemplate.queryForObject(sql, rowMapper, id);
 }
spring配置:
<!-- 配置数据源 dbcp -->
 <bean id="dataSourceId" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  <property name="url" value="jdbc:mysql://localhost:3306/dbname"></property>
  <property name="username" value="root"></property>
  <property name="password" value="1234"></property>
 </bean>
 <!-- 创建模板 -->
 <bean id="jdbcTemplateId" class="org.springframework.jdbc.core.JdbcTemplate">
  <property name="dataSource" ref="dataSourceId"></property>
 </bean>
 <!-- dao -->
 <bean id="userDaoId" class="cn.itcast.b_dbcp.UserDao">
  <property name="jdbcTemplate" ref="jdbcTemplateId"></property>
 </bean>

配置c3p0:
dao和模板创建基本不变
注意:在使用c3p0时可以使用属性注入模板(如上面)也可以直接将数据源作为属性注入
c3p0编写时数据库驱动名、URL、用户名与dbcp不同。
 <!-- 配置数据源 c3p0 -->
 <bean id="dataSourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
  <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dbname"></property>
  <property name="user" value="root"></property>
  <property name="password" value="1234"></property>
 </bean>

JdbcDaoSupport:
dao:
继承JdbcDaoSupport;采用父类方法来操作数据:this.getJdbcTemplate().update(...)
public class UserDao extends JdbcDaoSupport{
 
 public User findById(Integer id){
  String sql = "select * from t_user where id = ?";
  //使用 ParameterizedBeanPropertyRowMapper 完成数据封装, 数据库表的字段必须javabean属性 一致
  RowMapper<User> rowMapper = ParameterizedBeanPropertyRowMapper.newInstance(User.class);
  return getJdbcTemplate().queryForObject(sql, rowMapper, id);
 }
 public List<User> findAll(){
  String sql = "select * from t_user";
  RowMapper<User> rowMapper = ParameterizedBeanPropertyRowMapper.newInstance(User.class);
  return this.getJdbcTemplate().query(sql, rowMapper);
 }

}
c3p0配置:
 <!-- 配置数据源 c3p0 -->
 <bean id="dataSourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
  <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dbname"></property>
  <property name="user" value="root"></property>
  <property name="password" value="1234"></property>
 </bean>
 <!-- dao 不需要模板
  * 将数据源注入给dao,UserDao没有setter,但父类提供
  * 当将数据源提供给JdbcDaoSupport之后,底层将自动的创建模板
 -->
 <bean id="userDaoId" class="cn.itcast.d_jdbcdaosupport.UserDao">
  <property name="dataSource" ref="dataSourceId"></property>
 </bean>

使用properties:
<!-- 加载properties配置
  * 之后通过 ${key}获得
 -->
 <context:property-placeholder location="classpath:cn/xxx/e_properties/jdbcInfo.properties"/>
 <!-- 配置数据源 c3p0 -->
 <bean id="dataSourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="${jdbc.driverClass}"></property>
  <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
  <property name="user" value="${jdbc.user}"></property>
  <property name="password" value="${jdbc.password}"></property>
 </bean>

  

猜你喜欢

转载自jackpot1234.iteye.com/blog/2310803