zoukankan      html  css  js  c++  java
  • 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);
    	}
    
    }



     

  • 相关阅读:
    php ajax请求和返回
    关于 58 996 浪潮 奋进者计划 华为 奋斗者协议—— 小论!
    简单的行为控制管理方法,自动登录,session定时验证码过期
    mysql performance_schema 和information_schema.tables了解
    视频直播点播nginx-rtmp开发手册中文版
    PHPExcel中文开发手册翻译版(2)
    vm安装centos 老是出现 grub.conf 配置问题
    PHPExcel中文开发手册翻译版(1)
    微信支付 扫码支付 模式二 完整版和测试代码+后台对账
    PHP写在线视频直播技术详解
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3648143.html
Copyright © 2011-2022 走看看