最近 使用 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 JDBC Template是Spring框架中用于简化JDBC操作的一个核心组件,它是Spring对JDBC API的封装,旨在提供一个更加简洁、健壮且可测试的数据库访问层。在这个实例工程中,我们...
用户在登录页面提交表单后,Struts2的Action类会接收到这些请求,并进行相应的业务处理。Action类通常继承自Struts2的ActionSupport类,通过注解或配置文件来指定执行的方法。在登录验证时,Action类会调用Spring...
通过封装原生的JDBC API,JdbcTemplate不仅提高了代码的可读性和可维护性,还帮助开发者避免了许多常见的错误,比如资源关闭、SQL注入等问题。 Spring框架提供了多种模板类来处理不同的数据访问需求,例如...
在Spring框架中,`JdbcTemplate`是用于简化Java数据库连接(JDBC)操作的一个核心组件。这个类提供了很多方法来执行SQL查询、更新语句,包括批处理操作。本篇文章将详细探讨`batchUpdate`方法及其在实际开发中的应用...
注意:只是jdbc自带的jdbctample,不能 用于整合mybatis...xml中要有这句,可以解决子类类报错的问题。 或者去掉这句话,同时去掉public class AccountServiceImpl implements AccountService {继承关系,也可以解决
首先,让我们了解在不使用JDBCTemplate时,传统的JDBC操作通常涉及以下步骤:加载驱动、建立数据库连接、创建Statement或PreparedStatement对象、执行SQL、处理结果集、关闭资源。这个过程繁琐且容易出错,尤其是在...
SSH笔记-Spring JdbcTemplate是关于如何在Spring框架中利用JdbcTemplate进行数据库操作的教程。Spring是一个广泛应用的Java企业级应用框架,它提供了多种数据访问工具,而JdbcTemplate就是其中之一,用于简化JDBC...
3. **事务管理**:Spring的事务管理能力可以与JdbcTemplate结合使用,实现自动的事务回滚和提交,降低了事务处理的复杂性。 4. **异常处理**:JdbcTemplate将JDBC抛出的SQLException转换为Spring的...
标题中的“一个简单易用可对象操作基于SpringJdbcTemplate的JDBC帮助包”指的是一个专为简化Java开发中数据库操作而设计的工具包。这个工具包利用了Spring的JdbcTemplate,它是一个轻量级的ORM(对象关系映射)框架...
Struts、Spring 和 JDBCTemplate 是三个在 Java Web 开发中常用的框架和技术,它们结合使用可以构建出高效且灵活的企业级应用程序。在这个“Struts+Spring+JdbcTemplate Demo”中,我们将探讨这三个组件如何协同工作...
声明式事务管理通常通过AOP(面向切面编程)实现,只需在方法上添加@Transactional注解,Spring就会自动处理事务的开始、提交和回滚。 7. **异常处理** Spring JDBC将数据库特定的异常转换为Spring的...
本文主要针对在Spring + MyBatis环境下,或使用Spring JDBC时,Oracle事务不能正常提交的问题进行了深入分析,并提出了相应的解决方案。根据提供的部分内容,我们发现该问题与不同的数据源配置有关。具体来说,当...
在Spring框架中,JdbcTemplate是用于简化数据库操作的重要组件,特别是在处理JDBC(Java Database Connectivity)时。在Spring4中,JdbcTemplate提供了事务管理的功能,使得开发者能够更好地控制数据库操作的原子性...
- **Spring Boot事务**:在Spring Boot中,通过`@Transactional`注解即可开启事务管理,配合DataSourceTransactionManager,可以轻松处理事务的回滚和提交。 4. **拦截器(Interceptor)** - **原理**:Spring ...
然而,单纯使用`JdbcTemplate`进行数据库操作时,并不能自动管理事务,因此我们需要了解如何通过`JdbcTemplate`结合Spring框架来实现事务控制。 #### 二、原生 JDBC 的事务控制 在没有使用任何框架的情况下,我们...
Spring 框架是 Java 开发中的一个核心组件,它提供了丰富的功能,包括但不限于依赖注入、面向切面编程以及对各种技术的集成。在数据访问层,Spring 提供了多种方式来操作数据库,其中 `JdbcTemplate` 是一个简单且...
此外,Spring还能通过SessionFactoryBean来创建Hibernate的SessionFactory,并通过AOP代理实现事务的自动提交或回滚。 **Spring + JdbcTemplate整合**: 虽然Hibernate提供了强大的ORM功能,但在某些场景下,比如...
SpringMVC是一个强大的Java web应用程序开发框架,它简化了模型-视图-控制器(MVC)架构的实现,使得开发者可以更专注于...通过这种方式,你可以在不牺牲灵活性的同时,享受到Spring和`jdbcTemplate`带来的便利和稳定。
1.针对SpringMVC注解的配置...2.Spring+JdbcTemplate事物管理 3.Spring+Hibernate事物管理 4.Spring实现DWR注解方式的应用配置 5.Spring配置拦截器 6.Spring通过拦截器实现防止重复提交实例 对学习,会起到非常好的效果
总结,Spring的JdbcTemplate是数据库操作的利器,它极大地简化了SQL操作,提供了事务管理,同时也有效地防止了SQL注入问题。通过灵活的参数绑定和结果集映射,我们可以方便地构建各种复杂的数据库交互逻辑。了解并...