Spring整合jdbc

首先web.xml文件跟往常一样,加载spring容器和加载org.springframework.web.context.ContextLoaderListener读取applicationContext.xml文件初进行始化。

使用spring整合jdbc工具步骤:

  1.使用连接池com.mchange.v2.c3p0.ComboPooledDataSource等工具创建数据源。

  2.把数据源交给LazyConnectionDataSourceProxy进行管理

  3.把LazyConnectionDataSourceProxy管理的数据源注入到需要的JavaBean中

applicationContext.xml文件内容

<?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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.2.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

    <!-- 读取jdbc的配置文件中的jdbc连接属性 (以下两种都可以)-->
    <!-- <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
        lazy-init="false">
        <property name="locations">
            <list>
                <value>classpath*:jdbc.properties</value>
            </list>
        </property>
    </bean> -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="locations">
          <value>classpath*:jdbc.properties</value>
       </property>
    </bean>
    <!-- 配置数据源 -->
    <bean id="mainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass">
            <value>${db.driverClass}</value>
        </property>
        <property name="jdbcUrl">
            <value>${db.url}</value>
        </property>
        <property name="user">
            <value>${db.userName}</value>
        </property>
        <property name="password">
            <value>${db.password}</value>
        </property>
        <property name="minPoolSize">
            <value>20</value>
        </property>
        <property name="maxPoolSize">
            <value>100</value>
        </property>
        <property name="initialPoolSize">
            <value>20</value>
        </property>
        <property name="maxIdleTime">
            <value>7200</value>
        </property>
        <property name="acquireIncrement">
            <value>10</value>
        </property>
        <property name="maxStatements">
            <value>20</value>
        </property>
        <!-- 每60秒检查所有连接池中的空闲连接。Default: 0 -->
        <property name="idleConnectionTestPeriod">
            <value>60</value>
        </property>
        <!-- 定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
        <property name="acquireRetryAttempts">
            <value>100</value>
        </property>
        <property name="acquireRetryDelay">
            <value>10</value>
        </property>
        <property name="breakAfterAcquireFailure">
            <value>false</value>
        </property>
        <!-- 测试连接的有效性 消耗很大 -->
        <property name="testConnectionOnCheckout">
            <value>false</value>
        </property>
        <!-- 测试连接的有效性 消耗很大 自动检测连接状况 -->
        <property name="testConnectionOnCheckin">
            <value>false</value>
        </property>
        <property name="preferredTestQuery">
            <value>SELECT count(*) FROM linktest</value>
        </property>
    </bean>
    <!-- 用LazyConnectionDataSourceProxy管理数据源 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
        <property name="targetDataSource">
            <ref local="mainDataSource" />
        </property>
    </bean>
    <!-- 配置jdbc模板 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="BaseDaoImpl" class="com.qm.frame.core.dao.BaseDaoImpl">
        <property name="dataSource" ref="dataSource" />
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>
</beans>

jdbc.properties文件

db.driverClass=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/inter_tv
db.userName=root
db.password=root

BaseDaoImpl.class

package com.qm.frame.core.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementSetter;

public class BaseDaoImpl implements IBaseDao{
    //spring的模板工具
    private JdbcTemplate jdbcTemplate;
    //jdbc的数据源
    private DataSource dataSource;public int update(){
    System.out.println("hashCode " + jdbcTemplate.hashCode());
    try {
      Connection connection =  dataSource.getConnection();
      PreparedStatement preparedStatement = connection.prepareStatement("select * from EIBS_BASE_TASKINFO");
     ResultSet resultSet =  preparedStatement.executeQuery();
     while (resultSet.next()) {
         System.out.println("checkId " + resultSet.getLong(1));
    }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return  0;
    }
    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    public DataSource getDataSource() {
        return dataSource;
    }
    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
}
时间: 2025-01-01 12:45:00

Spring整合jdbc的相关文章

Spring(十三)Spring整合JDBC

做开发不连接数据库怎么行!Spring整合JDBC过程中,数据源可以直接都在beans.xml里配置,也可以把数据单独放在一个properties文件里,方便维护. 首先放入各种jar包,连接MySQL当然要放数据驱动文件. jar包什么的对照项目截图,切面aspect和cglib在这个工程没用到,jar包可以不添加进来 beans.xml,在头文件加上tx事务相关的引用,其他要注意的在文件的注释里基本都点到了 <?xml version="1.0" encoding="

JAVAEE——spring03:spring整合JDBC和aop事务

一.spring整合JDBC 1.spring提供了很多模板整合Dao技术 2.spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模板对象 与DBUtils中的QueryRunner非常相似. //0 准备连接池 ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass("com.mysql.jdbc.Dri

spring 整合JDBC

使用Spring提供的三个JDBC模板类(JdbcTemplate.NamedParameterJdbcTemplate.SimpleJdbcTemplate)操作数据库 一.JdbcTemplate是Spring中最主要的JDBC模板, 利用JDBC和简单的索引參数查询对数据库进行简单訪问 二.NamedParameterJdbcTemplate可以在查询的时候把值绑定到SQL里的命名參数,而不是索引參数 NamedParameterJdbcTemplate内部包括了一个JdbcTemplat

Spring整合JDBC模板方法设计模式之基于继承的实现

Spring整合JDBC模板方法设计模式之基于继承的实现: 模板设计模式简单描述: 把相同的部分提取出来,当我们运行的时候自动往里面设置值,在JdbcTemplate 的源代码中得execute(). 他把公共的部分拎出来写到一个特别的函数中,当我们使用的时候把会发生变化的内容在特定的部分调用,在不同的类里面处理相同的操作,这种方式就做模板设计模式. 例如,JdbcTemplate类中的方法: // ------------------------------------------------

Spring整合JDBC模板方法设计模式之基于组合的实现

Spring整合JDBC模板方法设计模式之基于组合的实现 模板设计模式指的是将相应的模板方法提取出来在一个专门的一个位置定义,然后把相同调用过程的操作通过模板实现. 对于模板设计模式,一般有2中方式 1.基于继承的方式实现 2.基于组合的方式实现 前面实现了:1.基于继承的方式实现 ,Spring整合JDBC模板方法设计模式之基于继承的实现 接下来实现:2.基于组合的方式实现 Spring整合JDBC模板方法设计模式之基于组合的方法在我们有大量类的情况下使用特别方便. 此实现模拟了Spring中

Spring整合JDBC实现简单的增删改

Spring整合JDBC实现简单的增删改: 1.导入Spring的包和数据库的驱动包: 2.选择一个数据源(dbcp和C3P0) 3.导入数据源的包(这里我们使用dbcp) <span style="font-family:FangSong_GB2312;font-size:14px;">commons-pool-1.5.6.jar .commons-dbcp-1.4.jar(jdk6+)</span> 4.在beans.xml中创建dataSource数据源

Spring笔记(五): spring 整合jdbc、hibernate、jpa

一.简介 (一)需要的jar包 1.需要的jar包:spring.hibernate.mysql.xml.apache-commons等等的jar包.        2.以上jar包,如spring.xml和commos都是冗余的. (二)分析 1.涉及到的实体.service.dao接口.jdbc配置文件以及service实现类都可以通用,只需要实现不同的dao实现类.配置.测试类. 2.通用的源码如下: 1)实体: <span style="font-size:18px;"&

Spring整合JDBC以及AOP管理事务

本节内容: Spring整合JDBC Spring中的AOP管理事务 一.Spring整合JDBC Spring框架永远是一个容器,Spring整合JDBC其实就是Spring提供了一个对象,这个对象封装了JDBC技术,它可以操作数据库,这个对象可以放入Spring容器,交给Spring容器来管理.所以我们主要是要学习这个对象:JDBCTemplate.这个对象和DBUtils中的QueryRunner非常相似. 1. 导包 4+2+2(测试需要的包spring-test,新版本测试时还需要sp

Spring——spring整合JDBC,

spring整合JDBC spring提供了很多模板整合Dao技术 其中JdbcTemplate封装了JDBC技术,其与DBUtils中的QueryRunner非常相似. 与Web结合步骤: 1.导包 4+2 spring-testspring-aopjunit4类库 c3p0连接池JDBC驱动 spring-jdbcspring-tx事务 2.书写Dao 获取JdbcTemplate对象的方法 方式一: 继承JdbcDaoSupport类,使用super.getJdbcTemplate()获取