`

spring JdbcTemplate 不提交的问题

 
阅读更多

最近 使用  spring3 的 JdbcTemplate  的模板,对 insert,update 语句进行操作时,发现数据库中数据没有变化。代码如下:

final String name ="name";

final int id =2;

int count = this.getJdbcTemplate().update(new PreparedStatementCreator() {
   @Override
   public PreparedStatement createPreparedStatement(Connection conn)
     throws SQLException {
   //  String sql ="insert into test(id,name) values(?,?)";
    String sql = "update test set name=? where id=?";
    PreparedStatement pst = conn.prepareStatement(sql);
    pst.setString(1, name);
    pst.setInt(2, id); 
    return pst;
   }
  });

 

数据库连接配置:

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" /> 

  <property name="initialSize" value="${dbcp.initialSize}" />
  <property name="maxActive" value="${dbcp.maxActive}" />
  <property name="maxIdle" value="${dbcp.maxIdle}" />
  <property name="defaultAutoCommit" value="false" />

</bean>

 

sql 语句正常执行,但是数据库中数据没有变化。经过分析原因出在<property name="defaultAutoCommit" value="false" />  这个配置参数上。把参数值修改为 true 就可以提交数据了。

不修改<property name="defaultAutoCommit" value="false" />   这个参数配置, 添加spring事物管理就提交数据了。

代码如下:

 

 TransactionTemplate ttt = new TransactionTemplate(transactionManager);
  ttt.execute(new TransactionCallback<Object>() {
   @Override
   public Object doInTransaction(TransactionStatus ts) {
    int count = getJdbcTemplate().update(
      new PreparedStatementCreator() {
       @Override
       public PreparedStatement createPreparedStatement(
         Connection conn) throws SQLException {
        // String sql
        // ="insert into test(id,name) values(?,?)";
        String sql = "update test set name=? where id=?";
        PreparedStatement pst = conn
          .prepareStatement(sql);
        pst.setString(1, "name");
        pst.setInt(2, 1);
        return pst;
       }
      });
    
    return null;
   }
  });

 

 

 

添加事物管理后,就可以提交了。

 

 

 

 

分享到:
评论

相关推荐

    spring-jdbcTemplate实例工程

    《深入解析Spring JdbcTemplate》 Spring JDBC Template是Spring框架中用于简化JDBC操作的一个核心组件,它是Spring对JDBC API的封装,旨在提供一个更加简洁、健壮且可测试的数据库访问层。在这个实例工程中,我们...

    strut2+spring+springjdbctemplate做的简易登录系统

    用户在登录页面提交表单后,Struts2的Action类会接收到这些请求,并进行相应的业务处理。Action类通常继承自Struts2的ActionSupport类,通过注解或配置文件来指定执行的方法。在登录验证时,Action类会调用Spring...

    4.Spring中的JdbcTemplate,Spring中的的事务,

    通过封装原生的JDBC API,JdbcTemplate不仅提高了代码的可读性和可维护性,还帮助开发者避免了许多常见的错误,比如资源关闭、SQL注入等问题。 Spring框架提供了多种模板类来处理不同的数据访问需求,例如...

    Spring JdbcTemplate.batchUpdate 例子

    在Spring框架中,`JdbcTemplate`是用于简化Java数据库连接(JDBC)操作的一个核心组件。这个类提供了很多方法来执行SQL查询、更新语句,包括批处理操作。本篇文章将详细探讨`batchUpdate`方法及其在实际开发中的应用...

    spring框架手动提交事务,jdbctample

    注意:只是jdbc自带的jdbctample,不能 用于整合mybatis...xml中要有这句,可以解决子类类报错的问题。 或者去掉这句话,同时去掉public class AccountServiceImpl implements AccountService {继承关系,也可以解决

    spring jdbcTemplate 源码

    首先,让我们了解在不使用JDBCTemplate时,传统的JDBC操作通常涉及以下步骤:加载驱动、建立数据库连接、创建Statement或PreparedStatement对象、执行SQL、处理结果集、关闭资源。这个过程繁琐且容易出错,尤其是在...

    SSH笔记-Spring JdbcTemplate

    SSH笔记-Spring JdbcTemplate是关于如何在Spring框架中利用JdbcTemplate进行数据库操作的教程。Spring是一个广泛应用的Java企业级应用框架,它提供了多种数据访问工具,而JdbcTemplate就是其中之一,用于简化JDBC...

    jdbcTemplate-spring对jdbc的支持

    3. **事务管理**:Spring的事务管理能力可以与JdbcTemplate结合使用,实现自动的事务回滚和提交,降低了事务处理的复杂性。 4. **异常处理**:JdbcTemplate将JDBC抛出的SQLException转换为Spring的...

    一个简单易用可对象操作基于SpringJdbcTemplate的JDBC帮助包

    标题中的“一个简单易用可对象操作基于SpringJdbcTemplate的JDBC帮助包”指的是一个专为简化Java开发中数据库操作而设计的工具包。这个工具包利用了Spring的JdbcTemplate,它是一个轻量级的ORM(对象关系映射)框架...

    struts+spring +jdbctemplate demo

    Struts、Spring 和 JDBCTemplate 是三个在 Java Web 开发中常用的框架和技术,它们结合使用可以构建出高效且灵活的企业级应用程序。在这个“Struts+Spring+JdbcTemplate Demo”中,我们将探讨这三个组件如何协同工作...

    SpringJDBC.rar_SpringJDBC_jdbctemplate_jdbctemplate spring

    声明式事务管理通常通过AOP(面向切面编程)实现,只需在方法上添加@Transactional注解,Spring就会自动处理事务的开始、提交和回滚。 7. **异常处理** Spring JDBC将数据库特定的异常转换为Spring的...

    关于SpringMyBatis纯注解事务不能提交的问题分析与解决

    本文主要针对在Spring + MyBatis环境下,或使用Spring JDBC时,Oracle事务不能正常提交的问题进行了深入分析,并提出了相应的解决方案。根据提供的部分内容,我们发现该问题与不同的数据源配置有关。具体来说,当...

    Spring4--3.jdbcTemplate事务

    在Spring框架中,JdbcTemplate是用于简化数据库操作的重要组件,特别是在处理JDBC(Java Database Connectivity)时。在Spring4中,JdbcTemplate提供了事务管理的功能,使得开发者能够更好地控制数据库操作的原子性...

    Spring boot +jdbctemplate

    - **Spring Boot事务**:在Spring Boot中,通过`@Transactional`注解即可开启事务管理,配合DataSourceTransactionManager,可以轻松处理事务的回滚和提交。 4. **拦截器(Interceptor)** - **原理**:Spring ...

    JdbcTemplate的事务控制.docx

    然而,单纯使用`JdbcTemplate`进行数据库操作时,并不能自动管理事务,因此我们需要了解如何通过`JdbcTemplate`结合Spring框架来实现事务控制。 #### 二、原生 JDBC 的事务控制 在没有使用任何框架的情况下,我们...

    spring内置jdbctemplate使用demo

    Spring 框架是 Java 开发中的一个核心组件,它提供了丰富的功能,包括但不限于依赖注入、面向切面编程以及对各种技术的集成。在数据访问层,Spring 提供了多种方式来操作数据库,其中 `JdbcTemplate` 是一个简单且...

    Spring + Hibernate + JdbcTemplate

    此外,Spring还能通过SessionFactoryBean来创建Hibernate的SessionFactory,并通过AOP代理实现事务的自动提交或回滚。 **Spring + JdbcTemplate整合**: 虽然Hibernate提供了强大的ORM功能,但在某些场景下,比如...

    springMVC-jdbcTemplate jar包

    SpringMVC是一个强大的Java web应用程序开发框架,它简化了模型-视图-控制器(MVC)架构的实现,使得开发者可以更专注于...通过这种方式,你可以在不牺牲灵活性的同时,享受到Spring和`jdbcTemplate`带来的便利和稳定。

    Spring3+Dwr+JdbcTemplate(拦截器方式实现防止重复提交)

    1.针对SpringMVC注解的配置...2.Spring+JdbcTemplate事物管理 3.Spring+Hibernate事物管理 4.Spring实现DWR注解方式的应用配置 5.Spring配置拦截器 6.Spring通过拦截器实现防止重复提交实例 对学习,会起到非常好的效果

    Spring:JdbcTemplate使用指南

    总结,Spring的JdbcTemplate是数据库操作的利器,它极大地简化了SQL操作,提供了事务管理,同时也有效地防止了SQL注入问题。通过灵活的参数绑定和结果集映射,我们可以方便地构建各种复杂的数据库交互逻辑。了解并...

Global site tag (gtag.js) - Google Analytics