Spring的JDBC模板

Spring对持久层技术支持
  JDBC : org.springframework.jdbc.core.JdbcTemplate
  Hibernate3.0 : org.springframework.orm.hibernate3.HibernateTemplate
  IBatis(MyBatis) : org.springframework.orm.ibatis.SqlMapClientTemplate
  JPA : org.springframework.orm.jpa.JpaTemplate
开发JDBCTemplate入门
  第一步:引入相应jar包
    spring-tx-3.2.0.RELEASE.jar
    spring-jdbc-3.2.0.RELEASE.jar
    mysql驱动.
  第二步:编写一个测试类

@Test
public void demo1(){
  // 创建连接池:
  DriverManagerDataSource dataSource = new DriverManagerDataSource();
  // 设置参数:
  dataSource.setDriverClassName("com.mysql.jdbc.Driver");
  dataSource.setUrl("jdbc:mysql:///spring3_day02");
  dataSource.setUsername("root");
  dataSource.setPassword("123");
  // 使用JDBC的模板:
  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  jdbcTemplate.execute("create table user (id int primary key auto_increment,name varchar(20))");
}

配置连接池
  Spring默认的连接池

<!-- 配置Spring默认的连接池 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql:///spring3_day02"/>
  <property name="username" value="root"/>
  <property name="password" value="123"/>
</bean>
<!-- 定义jdbctemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  <property name="dataSource" ref="dataSource"/>
</bean>

    测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringTest1 {
  @Autowired
  @Qualifier("jdbcTemplate")
  private JdbcTemplate jdbcTemplate;
  @Test
  public void demo2(){
    jdbcTemplate.execute("create table user (id int primary key auto_increment,name varchar(20))");
  }
}

  

  DBCP连接池
    导入jar包
      com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
      com.springsource.org.apache.commons.pool-1.5.3.jar

<!-- 配置DBCP连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql:///spring3_day02"/>
  <property name="username" value="root"/>
  <property name="password" value="123"/>
</bean>

  C3P0连接池
    导入jar包
      com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

<!-- 配置c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="com.mysql.jdbc.Driver"/>
  <property name="jdbcUrl" value="jdbc:mysql:///spring3_day02"/>
  <property name="user" value="root"/>
  <property name="password" value="123"/>
</bean>

参数设置到属性文件中
  在src下创建jdbc.properties

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql:///spring3_day02
jdbc.user = root
jdbc.password = 123

  需要在applicationContext.xml 中使用属性文件配置的内容.
    第一种写法

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="classpath:jdbc.properties"></property>
</bean>

    第二种写法(需要引入context标签的头)

<context:property-placeholder location="classpath:jdbc.properties"/>

    案例

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd"
>   <!--
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">       <property name="location" value="classpath:jdbc.properties"></property>      </bean>
  -->   <context:property-placeholder location="classpath:jdbc.properties"/>   <!-- 配置c3p0连接池 -->   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">     <property name="driverClass" value="${jdbc.driver}"/>     <property name="jdbcUrl" value="${jdbc.url}"/>     <property name="user" value="${jdbc.user}"/>     <property name="password" value="${jdbc.password}"/>   </bean>   <!-- 定义jdbctemplate -->   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">     <property name="dataSource" ref="dataSource"/>   </bean> </beans>

JdbcTemplate的CRUD的操作
  Spring框架中提供了对持久层技术支持的类
    JDBC : org.springframework.jdbc.core.support.JdbcDaoSupport
    Hibernate 3.0 : org.springframework.orm.hibernate3.support.HibernateDaoSupport
    iBatis : org.springframework.orm.ibatis.support.SqlMapClientDaoSupport

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd"
>   <context:property-placeholder location="classpath:jdbc.properties"/>   <!-- 配置c3p0连接池 -->   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">     <property name="driverClass" value="${jdbc.driver}"/>     <property name="jdbcUrl" value="${jdbc.url}"/>     <property name="user" value="${jdbc.user}"/>     <property name="password" value="${jdbc.password}"/>   </bean>   <!-- 定义jdbctemplate -->   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">     <property name="dataSource" ref="dataSource"/>   </bean>   <bean id="userDao" class="cn.yzu.spring3.demo2.UserDao">     <property name="jdbcTemplate" ref="jdbcTemplate"/>   </bean> </beans>
public class UserDao extends JdbcDaoSupport{
  public void add(User user){
    String sql = "insert into user values (null,?)";
    this.getJdbcTemplate().update(sql, user.getName());
  }
  public void update(User user){
    String sql = "update user set name = ? where id = ?";
    this.getJdbcTemplate().update(sql, user.getName(),user.getId());
  }
  public void delete(User user){
    String sql = "delete from user where id = ?";
    this.getJdbcTemplate().update(sql, user.getId());
  }
  public int findCount(){
    String sql = "select count(*) from user";
    return this.getJdbcTemplate().queryForInt(sql);
  }
  public String findNameById(int id){
    String sql = "select name from user where id = ?";
    return this.getJdbcTemplate().queryForObject(sql, String.class, id);
  }
  public User findById(int id){
    String sql = "select * from user where id = ?";
    User user = this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(), id);
    return user;
  }
  public List<User> findAll(){
    String sql = "select * from user";
    return this.getJdbcTemplate().query(sql, new UserRowMapper());
  }
  class UserRowMapper implements RowMapper<User>{
    /**
    * rs:结果集.
    * rowNum:行号
    */
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
      User user = new User();
      user.setId(rs.getInt("id"));
      user.setName(rs.getString("name"));
      return user;
    }
  }
}
原文地址:https://www.cnblogs.com/fengmingyue/p/6208113.html