Spring -- spring 中使用jdbc, c3p0连接池, dao概念

1. 示例代码

CustomerDao.java  ,dao接口

public interface CustomerDao {
	public void insertCustomer(Customer c);
	public void updateCustomer(Customer c);
	public List<Customer> findCustomerByName(String name);
}


CustomerDaoImpl.java 接口实现

/**
 * CustomerDaoImpl
 */
public class CustomerDaoImpl implements CustomerDao {
	private JdbcTemplate jt ;
	public void setJt(JdbcTemplate jt) {
		this.jt = jt;
	}

	public List<Customer> findCustomerByName(String name) {
		String sql="select id,name,age from customers where name = ?";
		return jt.query(sql, new Object[]{name}, new RowMapper(){
			public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
				Customer c = new Customer();
				c.setId(rs.getInt("id"));
				c.setName(rs.getString("name"));
				c.setAge(rs.getInt("age"));
				return c;
			}});
	}

	/**
	 * 插入
	 */
	public void insertCustomer(Customer c) {
		String sql = "insert into customers(name,age) values(?,?)";
		jt.update(sql, new Object[]{c.getName(),c.getAge()});
	}

	public void updateCustomer(Customer c) {
		String sql = "update customers set name = ?,age = ? where id = ?";
		jt.update(sql,new Object[]{c.getName(),c.getAge(),c.getId()});
	}
}


jdbc.properties 分散配置

jdbc.driverclass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.username=root
jdbc.password=root

c3p0.pool.size.max=10
c3p0.pool.size.min=2
c3p0.pool.size.ini=3
c3p0.pool.size.increment=2


dao.xml 配置文件

<?xml version="1.0"?>
<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-2.5.xsd 
                        http://www.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
    <!-- 指定分散配置的文件的位置 -->
    <context:property-placeholder location="classpath:cn/itcast/spring/dao/jdbc.properties"/>
    <!-- 配置c3p0数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverclass}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <property name="maxPoolSize" value="${c3p0.pool.size.max}" />
        <property name="minPoolSize" value="${c3p0.pool.size.min}" />
        <property name="initialPoolSize" value="${c3p0.pool.size.ini}" />
        <property name="acquireIncrement" value="${c3p0.pool.size.increment}" />
    </bean>
    
    <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>
    
    <!-- customerDao -->
    <bean id="customerDao" class="cn.itcast.spring.dao.CustomerDaoImpl">
        <property name="jt" ref="jt" />
    </bean>
    
    <!-- *************************** daoSupport **************************** -->
    <bean id="customerDaoSuport" class="cn.itcast.spring.dao.CustomerDaoSuportImpl">
        <property name="dataSource" ref="dataSource" />
    </bean>
</beans>


App.java 测试代码

public class App {

	public static void main(String[] args) throws SQLException {
		ApplicationContext ac = new ClassPathXmlApplicationContext(
				"cn/itcast/spring/dao/dao.xml");
		CustomerDao dao = (CustomerDao) ac.getBean("customerDao");
		Customer c = new Customer();
		c.setName("tom");
		c.setAge(23);
		dao.insertCustomer(c);
		//
		c = new Customer();
		c.setId(1);
		c.setName("jerry");
		c.setAge(23);
		dao.updateCustomer(c);
		
		dao.findCustomerByName("tom");
	}

}

CustomerDaoSuportImpl.java 另外一种配置方法: 省略模板的配置

/**
 * CustomerDaoImpl,省略模板的配置
 */
public class CustomerDaoSuportImpl extends JdbcDaoSupport implements CustomerDao {

	public List<Customer> findCustomerByName(String name) {
		String sql="select id,name,age from customers where name = ?";
		return getJdbcTemplate().query(sql, new Object[]{name}, new RowMapper(){
			public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
				Customer c = new Customer();
				c.setId(rs.getInt("id"));
				c.setName(rs.getString("name"));
				c.setAge(rs.getInt("age"));
				return c;
			}});
	}

	/**
	 * 插入
	 */
	public void insertCustomer(Customer c) {
		String sql = "insert into customers(name,age) values(?,?)";
		getJdbcTemplate().update(sql, new Object[]{c.getName(),c.getAge()});
	}

	public void updateCustomer(Customer c) {
		String sql = "update customers set name = ?,age = ? where id = ?";
		getJdbcTemplate().update(sql,new Object[]{c.getName(),c.getAge(),c.getId()});
	}
}


AppDaoSupport.java 省略模板配置  测试代码

public class AppDaoSupport {

	public static void main(String[] args) throws SQLException {
		ApplicationContext ac = new ClassPathXmlApplicationContext(
				"cn/itcast/spring/dao/dao.xml");
		CustomerDao dao = (CustomerDao) ac.getBean("customerDaoSuport");
		Customer c = new Customer();
		c.setName("tom");
		c.setAge(23);
		dao.insertCustomer(c);
	}

}



 

posted @ 2014-03-07 09:38  今晚打酱油_  阅读(358)  评论(0编辑  收藏  举报