zoukankan      html  css  js  c++  java
  • Java Spring-JdbcTemplate

    2017-11-10 22:55:45

    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
    public class Jdbc1 {
        @Test
        public void demo(){
            // 创建连接池
            DriverManagerDataSource dataSource = new DriverManagerDataSource();
    
            // 配置参数
            dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql://localhost:3306/testdb");
            dataSource.setUsername("root");
            dataSource.setPassword("hy1102");
    
            // 使用Jdbc模板
            JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
            jdbcTemplate.execute("create table user2 (id int primary key auto_increment,name varchar(20))");
        }
    }
    

    显然每次在程序中用代码创建连接池是很不方便的,于是我们可以使用Spring来帮助我们对这个类进行配置。

    常用的数据源有三种:

    • spring数据源实现类,DriverManagerDataSource;
    • DBCP数据源,BasicDataSource;
    • C3P0数据源,ComboPooledDataSource;

    一、DriverManagerDataSource的配置

    配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!--配置连接池-->
        <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/testdb"/>
            <property name="username" value="host"/>
            <property name="password" value="hy1102"/>
        </bean>
    
        <!--定义模板-->
        <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="datasource"/>
        </bean>
    </beans>
    

    测试类:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:config4.xml")
    public class Jdbc2 {
        @Resource(name = "jdbctemplate")
        private JdbcTemplate jt;
    
        @Test
        public void demo(){
            jt.execute("...");
        }
    }
    

    二、DBCP数据源,BasicDataSource的配置

    首先需要引入两个jar包,也就是commons.dbcp 和 commons.pool。和上一种方法略有区别,但差别很小。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!--配置连接池-->
        <!--<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">-->
            <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>-->
            <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>-->
            <!--<property name="username" value="host"/>-->
            <!--<property name="password" value="hy1102"/>-->
        <!--</bean>-->
    
        <!-- 配置DBCP连接池 -->
        <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/testdb"/>
            <property name="username" value="host"/>
            <property name="password" value="hy1102"/>
        </bean>
    
        <!--定义模板-->
        <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="datasource"/>
        </bean>
    </beans>
    

    三、C3P0数据源,ComboPooledDataSource的配置

    首先先引入jar包c3p0-0.9.1.2.jar。

    C3P0的配置参数和前两个不太一样,这个要注意。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!--配置连接池-->
        <!--<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">-->
        <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>-->
        <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>-->
        <!--<property name="username" value="host"/>-->
        <!--<property name="password" value="hy1102"/>-->
        <!--</bean>-->
    
        <!-- 配置DBCP连接池 -->
        <!--<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/testdb"/>-->
            <!--<property name="username" value="host"/>-->
            <!--<property name="password" value="hy1102"/>-->
        <!--</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/testdb"/>
            <property name=" user " value="host"/>
            <property name=" password " value="hy1102"/>
        </bean>
    
        <!--定义模板-->
        <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="datasource"/>
        </bean>
    </beans>
    

    四、将参数设置写到属性文件中

    方法一:

    在src文件夹下新建jdbc.properties文件

    jdbc.driver = com.mysql.jdbc.Driver
    jdbc.url = jdbc:mysql://localhost:3306/testdb
    jdbc.user = root
    jdbc.password = hy1102
    

    配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!--配置连接池-->
        <!--<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">-->
        <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>-->
        <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>-->
        <!--<property name="username" value="host"/>-->
        <!--<property name="password" value="hy1102"/>-->
        <!--</bean>-->
    
        <!-- 配置DBCP连接池 -->
        <!--<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/testdb"/>-->
            <!--<property name="username" value="host"/>-->
            <!--<property name="password" value="hy1102"/>-->
        <!--</bean>-->
    
        <!--引入该属性文件-->
        <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
            <property name="location" value="classpath:jdbc.properties"/>
        </bean>
    
        <!--  配置 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>
    
        <!--定义模板-->
        <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="datasource"/>
        </bean>
    </beans>
    

     方法二:

    使用context标签。

    <?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 id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">-->
        <!--<property name="driverClassName" value="com.mysql.jdbc.Driver"/>-->
        <!--<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>-->
        <!--<property name="username" value="host"/>-->
        <!--<property name="password" value="hy1102"/>-->
        <!--</bean>-->
    
        <!-- 配置DBCP连接池 -->
        <!--<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/testdb"/>-->
            <!--<property name="username" value="host"/>-->
            <!--<property name="password" value="hy1102"/>-->
        <!--</bean>-->
    
        <!--引入该属性文件-->
        <!--<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">-->
            <!--<property name="location" value="classpath:jdbc.properties"/>-->
        <!--</bean>-->
    
        <!--使用context标签引入属性文件-->
        <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>
    
        <!--定义模板-->
        <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="datasource"/>
        </bean>
    </beans>
    
  • 相关阅读:
    [daily][netcat] 在UNIX socket上使用netcat
    [emacs] emacs设置python code的indent
    [dev][python] 从python2进阶到python3你都需要了解什么
    [strongswan][autoconf][automake][cento] 在CentOS上编译strongswan git源码时遇到的autoconf问题
    [strongswan] strongswan是如何实现与xfrm之间的trap机制的
    对不可描述的软件安装sfbo插件
    [daily] 如何用emacs+xcscope阅读内核源码
    [daily] cscope
    [dev][ipsec] 什么是xfrm
    [dev][ipsec] netlink是什么
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/7816921.html
Copyright © 2011-2022 走看看