`
hunray
  • 浏览: 221070 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

【转】spring数据源的注入.JDBC模版管理

    博客分类:
  • Java
阅读更多

对于不同的数据库连接来源需求,spring提供了javax.sql.DataSource注入,更换数据来源只要在Bean定义中修改配置,而不用修改任何一行代码。
         应不同的系统,可能使用不同的数据来源,例如:jdbc、连接池、或是JNDI等等,资料变更是底层的行为,不应影响到上层的业务逻辑。
例子:
<beans>
       <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
           <property name="driverClassName">
               <value>com.mysql.jdbc.Driver</value>
           </property>
           <property name="url">
               <value>jdbc:mysql://localhost:3306/demo</value>
           </property>
           <property name="username">
               <value>caterpillar</value>
           </property>
           <property name="password">
               <value>123456</value>
           </property>
       </bean>
         <bean id="userDao" class="onlyfun.caterpillar.UserDao">
            <property name="dataSource">
               <ref bean="datasource"/>
            </property>
      </bean>
</beans>
其中"driverClassName"、"url"、"username"、"password"四個屬性分別用來設定JDBC驅動程式類別、資料庫 URL協定、使用者名稱、密碼,而DriverManagerDataSource继承了javax.sql.DataSource.
注意:
(1)、该例子使用的是简单的jdbc连接,如果应用到工程,必须使用连接池,这时只要更换class属性为class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
(2)、如果采用的是JNDI连接,可以这么设定:
<bean id="dataSource"
      class="org.springframework.indi.JndiObjectFactoryBean">
      <property name="jndiName">
         <value>jdbc/demo</value>
        </property>
</bean>
Spring学习笔记JDBC模版管理
对于Spring应用,Spring 提供了一个更好的数据持久化的框架,Spring让持久层的类UserDao继承 org.springframework.jdbc.core.JdbcTemplate这个封装了jdbc操作的类,要建立JdbcTemplate的实例,必须要有一个DataSource物件作为建构时的物件.
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
例子(1):-----取得模版
package onlyfun.caterpillar;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
public class UserDAO implements IUserDAO {
      private JdbcTemplate jdbcTemplate;
      public void setDataSource(DataSource dataSource) {
          jdbcTemplate = new JdbcTemplate(dataSource);
      }
          return null;
      }
}
例子(2):-----update操作(同样的操作适用于update、insert、delete)
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate
.update(
"UPDATE user SET age = ? WHERE id = ?",
new PreparedStatementSetter() {
public void setValues(PreparedStatementSetter ps)
throws SQLException {
ps.setInt(1, 18);
ps.setString(2, "erica");
}
}
);
第一个用于创建PreparedStatement的SQL。第二个参数是为PreparedStatement设定参数的
PreparedStatementSetter
注意:我们还可以通过JdbcTemplate.call方法调用存储过程.
编程式的事务管理:我们可以使用 org.springframework.jdbc.datasource.DataSourceTransactionManager(platformTransactionManager 的一个实现)作为我们的事务管理员,我们在Bean定义中配置,并将DataSource注入给它。
配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/TestDB</value>
           </property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value></value>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="userDAO" class="onlyfun.caterpillar.UserDAO">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
</bean>
</beans>

DAO操作类:

package onlyfun.caterpillar;
import javax.sql.DataSource;
import org.springframework.jdbc.core.*;
import org.springframework.transaction.*;
import org.springframework.transaction.support.*;
import org.springframework.dao.*;
public class UserDAO {
private DataSource dataSource;
private PlatformTransactionManager transactionManager;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void setTransactionManager(PlatformTransactionManager transactionManager) {
this.transactionManager = transactionManager;
}
public void insertUser(User user) {

DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update("INSERT INTO USER VALUES('Spring008', 'caterpillar', 'M', 29)");
jdbcTemplate.update("INSERT INTO USER VALUES('Spring009', 'momor', 'F', 26)");
jdbcTemplate.update("INSERT INTO USER VALUES('Spring010, 'beckyday', 'F', 35)");
} catch (DataAccessException ex) {
transactionManager.rollback(status); // 也可以執行status.setRollbackOnly();
        throw ex;
}
transactionManager.commit(status);


}
}

分享到:
评论

相关推荐

    Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate

    Spring JDBC模板类——`org.springframework.jdbc.core.JdbcTemplate`是Spring框架中的核心组件,它为Java开发者提供了一种方便、安全的方式来执行SQL语句,而无需直接管理数据库连接。`JdbcTemplate`通过抽象出低...

    Spring Data JDBC与JDBC的区别

    1. **自动配置**: Spring Boot通过自动配置,可以快速设置数据源和JDBC模板。 2. **Repository接口**: 开发者只需定义Repository接口,Spring会自动提供实现,无需编写繁琐的DAO层代码。 3. **ORM支持**: 尽管不如...

    spring对jdbc的支持jar包

    1. **JdbcTemplate**:这是Spring JDBC的基础组件,它通过模板方法模式封装了常见的JDBC操作,如执行SQL查询、更新、存储过程等。使用JdbcTemplate,开发者无需手动管理数据库连接、预编译语句、结果集转换等细节,...

    spring jdbc.zip

    Spring JDBC不仅包含了JDBC的基本功能,如数据源配置、事务管理,还引入了模板模式,即JdbcTemplate,进一步降低了数据库操作的复杂性。 JdbcTemplate是Spring JDBC的核心类,它是对JDBC的简单而强大的封装。它提供...

    Spring Boot多数据源(JdbcTemplate)配置与使用

    在Spring Boot应用中,我们经常需要处理来自多个数据源的数据,比如在开发微服务架构时,每个服务可能对应一个特定的数据源。`JdbcTemplate`是Spring框架提供的一个用于简化数据库操作的工具,它使得数据库访问更为...

    《Spring的数据源配置文件模板》applicationContext.zip

    本文件模板将详细介绍如何在Spring中配置数据源,以便为你的应用程序提供稳定、高效的数据库连接。 首先,我们需要理解Spring支持多种类型的数据源,包括Apache的DBCP、C3P0、HikariCP以及Oracle的UCP等。选择哪种...

    [课堂课件讲解]Java微服务实践-Spring Boot 数据库JDBC.pptx

    3. 嵌入式数据源(org.springframework.jdbc.datasource.embedded.EmbeddedDatabase):主要用于本地文件系统数据库,如HSQL、H2、Derby等。 二、事务(Transaction) 事务用于提供数据完整性,并在并发访问下确保...

    java开发之SpringMVC + Spring + SpringJDBC整合.zip

    2. 配置Spring:在servlet-context.xml中配置Spring的核心组件,包括Bean工厂、AOP、数据源以及JDBC模板。 3. 集成SpringJDBC:配置数据源,创建JdbcTemplate实例,然后在Service层中使用它进行数据库操作。 4. ...

    springjdbc.rar_SpringJDBC_spring jdbc

    在Spring框架中,Spring JDBC通过提供一个抽象层,使得开发者可以更方便地执行SQL查询,处理结果集,以及管理事务。下面将详细阐述两种在Spring中测试JDBC的方法。 ### 方法一:基于`JdbcTemplate` `JdbcTemplate`...

    springjdbc.zip_SpringJDBC_spring jdbc_spring 增删改查_springjdbc xml

    综上所述,`springjdbc.zip`文件中的示例可能展示了如何在Spring环境中配置和使用JDBC,包括数据源配置、事务管理、以及使用`JdbcTemplate`执行增删改查操作的完整流程。通过学习这些示例,开发者可以更好地理解和...

    Spring mvc + Spring + Spring jdbc 整合 demo.rar

    4. 数据访问对象(DAO):负责与数据库的交互,使用Spring JDBC模板执行SQL查询和更新操作。 5. 模型(Model):数据对象,用于在服务层和视图层之间传递数据。 6. 视图:可能包含JSP页面或其他模板技术,用于展示...

    Spring JDBC相关jar包:spring_jdbc_4.0.0.zip

    Spring框架支持多种数据源实现,如Apache Commons DBCP或C3P0,它们能够管理数据库连接的创建和回收。 2. **SQL查询**:`JdbcTemplate`提供了多种执行SQL查询的方法,如`queryForList`、`queryForObject`和`query`...

    SpringJDBC训练素材.zip

    在学习Spring JDBC的过程中,你将深入理解如何设置数据源、事务管理以及如何进行CRUD(创建、读取、更新和删除)操作。 首先,要了解Spring JDBC的基本架构,包括DataSource、JdbcTemplate、SimpleJdbcInsert、...

    Spring链接MYSQLjar包.rar

    总结起来,"Spring链接MYSQLjar包"涉及到的关键知识点包括:Spring框架、MySQL JDBC驱动、数据源配置、JdbcTemplate和NamedParameterJdbcTemplate的使用,以及Spring对数据库操作的支持。正确配置和使用这些组件,...

    Spring_jdbc模板相关jar包(连接文件版本:5.1.47)

    在配置Spring JDBC时,你需要在Spring的配置文件中定义数据源(DataSource)和JdbcTemplate实例。例如,你可以使用`com.zaxxer.hikari.HikariDataSource`作为高性能的数据源,然后通过`bean`定义创建`JdbcTemplate`...

    spring2跨数据源访问

    标题“spring2跨数据源访问”涉及到的是Spring框架在处理多数据源情况下的技术要点,主要涵盖如何在Spring应用中实现对多个数据库的灵活访问。在这个主题中,我们通常会讨论以下几个关键知识点: 1. **多数据源配置...

    SpringJDBC.rar_SpringJDBC_jdbctemplate_jdbctemplate spring

    通过配置XML或Java配置,可以将数据源注入到Spring容器中,如Apache的DBCP或C3P0等。 3. **JdbcTemplate介绍** JdbcTemplate是Spring JDBC的核心组件,它提供了一系列的模板方法来执行SQL语句,如查询、更新、插入...

    spring-jdbc-4.2.4.RELEASE.jar,spring-tx-4.2.4.RELEASE.jar,jdbcTemplate使用的jar包

    `JdbcTemplate`是Spring提供的一种模板方法模式实现,它封装了JDBC的常用操作,如执行SQL查询、更新等,提供了异常转换和数据源管理等功能。通过使用`JdbcTemplate`,开发者可以编写出更简洁、更健壮的数据库访问...

    Spring源代码解析(三):Spring_JDBC.doc

    总的来说,Spring JDBC的JdbcTemplate是Spring框架中用于数据库操作的关键组件,通过回调接口和模板方法设计,它极大地简化了数据库访问的代码,同时也提供了良好的异常处理和资源管理机制。理解和掌握JdbcTemplate...

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    1. 数据源配置:自动配置JDBC、JPA、MyBatis等数据访问技术。 2. 数据库迁移:支持Flyway和Liquibase数据库迁移工具。 3. Spring Data JPA:简化了与JPA供应商的交互,提供了CRUD操作的便捷接口。 六、Spring Boot...

Global site tag (gtag.js) - Google Analytics