`
sealsettle
  • 浏览: 3336 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Spring JdbcTemplate 数据库操作的问题

    博客分类:
  • Java
阅读更多
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:aop="http://ww[align=center][/align]w.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
	<!-- 数据源 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName"
			value="net.sourceforge.jtds.jdbc.Driver" />
		<property name="url"
			value="jdbc:jtds:sqlserver://localhost:1433/test;charset=GBK" />
		<property name="username" value="sa" />
		<property name="password" value="123" />
		<property name="poolPreparedStatements" value="true" />
		<property name="defaultAutoCommit" value="false" />
	</bean>
<!-- 事务 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
		
         	<!-- jdbcTemplate 注入 -->
	<bean id="jdbcTemplate"
		class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>	
         <!-- attendance 类注入 -->
	<bean id="attendance" class="emisx.attend.Attendance">
		<property name="jdbcTemplate" ref="jdbcTemplate" />
	</bean>

	<!-- 代理类 -->
	<bean id="checkWiner" class="emisx.attend.CheckWiner">
		<property name="attendance" ref="attendance"/>
	</bean>
	<!-- 定时器 -->
	<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
		<property name="delay" value="0"/>
		<property name="period" value="5000"/>
		<property name="timerTask" ref="checkWiner"/>
	</bean>
	<!-- 周期任务 -->
	<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
		<property name="scheduledTimerTasks">
			<list>
				<ref bean="scheduledTask" />
			</list>
		</property>
	</bean>
</beans>

Web.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
	<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/applicationContext.xml</param-value>
   </context-param>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	
</web-app>

Attendance 类

package emisx.attend;

import org.springframework.jdbc.core.JdbcTemplate;

public class Attendance {
	private JdbcTemplate jdbcTemplate;

	public JdbcTemplate getJdbcTemplate() {
		return jdbcTemplate;
	}

	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}

	public void importDBOnThread() {
		try {			
			System.out.println(getJdbcTemplate().hashCode());
			System.out.println(getJdbcTemplate().getDataSource());
			System.out.println(getJdbcTemplate().toString());
			getJdbcTemplate().update("insert into myt values(?,?)",new String[] {"a","n"});

             // 执行getJdbcTemplate().update()之后既没有报错,数据库也没有新的纪录不知道怎么回事
			System.out.println(getJdbcTemplate().hashCode());
			System.out.println(getJdbcTemplate().getDataSource());
			System.out.println(getJdbcTemplate().toString());
			System.out.println("1111111111");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



CheckWiner 代理代理调用 Attendance 类
package emisx.attend;

import java.util.TimerTask;

public class CheckWiner extends TimerTask {

	private Attendance attendance;

	public Attendance getAttendance() {
		return attendance;
	}

	public void setAttendance(Attendance attendance) {
		this.attendance = attendance;
	}

	public void run() {
		try {
			attendance.importDBOnThread();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
运行 attendance.importDBOnThread() 之后的结果 
30633470
org.apache.commons.dbcp.BasicDataSource@186c730
org.springframework.jdbc.core.JdbcTemplate@1d36dfe
30633470
org.apache.commons.dbcp.BasicDataSource@186c730
org.springframework.jdbc.core.JdbcTemplate@1d36dfe
1111111111
但是数据库却没有改变。

事务添加或者不添加结果都一样。大家帮帮忙瞧瞧...


<property name="defaultAutoCommit" value="false" />
	</bean>
//这行代码表示是否自动提交的,所以 修改下 values="true" 就ok了



分享到:
评论
4 楼 sealsettle 2008-11-27  
yygybing 写道

你都没有配置事务,数据库里当然没记录

<!-- 事务 -->  
    <bean id="transactionManager" 
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean> 
事务已经配置了但是情况还是一样的,不知道是不是没有没有想到郁闷呐。。。
3 楼 yygybing 2008-11-27  
你都没有配置事务,数据库里当然没记录
2 楼 sealsettle 2008-11-27  
okey8 写道

很明显啊 没有事务控制

加上事务是也同样的问题。没有区别
为什么别人的JdbcTemplate都可以执行sql语句我的执行了不报错而且还继续运行
1 楼 okey8 2008-11-27  
很明显啊 没有事务控制

相关推荐

    基于注解的Spring JdbcTemplate

    Spring JDBC模絫提供了一种简洁的方式来处理数据库操作,而`Spring JdbcTemplate`是这个模絫的核心组件。本教程将深入探讨如何使用基于注解的Spring JdbcTemplate进行数据库操作,特别适合初学者入门学习。 ### 1. ...

    SpringJdbcTemplate封装工具类

    使用SpringJdbcTemplate进行数据库操作通常涉及以下步骤: - 创建SpringJdbcTemplate实例,注入DataSource。 - 调用对应的方法,如`update()`执行更新操作,`queryForObject()`或`query()`执行查询操作,传入SQL...

    spring-jdbcTemplate实例工程

    总的来说,Spring JdbcTemplate是Spring框架中处理数据库操作的重要工具,它通过简化JDBC API,提升了开发效率和代码质量。在实际项目中,结合Spring的其他组件,可以构建出稳定、高效的数据访问层。这个实例工程为...

    Druid数据库连接池的SpringJDBCTemplate所需的jar包

    Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,Druid数据库连接池的SpringJDBCTemplate所需的jar包,...

    Spring JDBCTemplate连接池jar包

    总之,Spring JDBCTemplate结合连接池提供了一个高效且易于使用的数据库访问层,它降低了数据库操作的复杂性,同时也提升了系统的性能。正确配置和使用这些库,可以极大地优化我们的数据库应用程序。

    Spring JdbcTemplate 常用方法整理

    Spring的JdbcTemplate是Spring框架中用于简化数据库操作的工具类,它是基于JDBC但又抽象出了一层,避免了直接与数据库驱动API交互,从而提高了代码的可读性和可维护性。本文将深入探讨Spring JdbcTemplate的常用方法...

    Spring JdbcTemplate

    `BaseDaoImpl`则会实现这些接口方法,内部调用JdbcTemplate的相关API来完成实际的数据库操作。 **3. log4J配置文件:** `log4j.properties`是日志配置文件,用于设置应用程序的日志记录行为。在Spring JdbcTemplate...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储过程,然后编写 Java 代码使用 Spring JdbcTemplate 调用...

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

    Spring JDBC Template是Spring提供的一个简化数据库操作的工具,它封装了JDBC的繁琐部分,让开发者可以更专注于业务逻辑。 在这个“简易登录系统”中,Struts2主要承担用户界面和控制器之间的交互。用户在登录页面...

    使用Spring JDBCTemplate进行增删改查curd操作

    如果数据库操作失败,JdbcTemplate会抛出异常,如`DataAccessException`,使得我们可以快速定位并处理问题。 总结来说,Spring JdbcTemplate通过提供一套简单易用的API,极大地简化了数据库操作,同时保证了代码的...

    Spring JdbcTemplate查询实例

    Spring JdbcTemplate是Spring框架中用于简化数据库操作的一个重要组件,它是Spring对JDBC的轻量级封装,旨在提供一种结构良好、易于使用的SQL执行机制,同时保持了JDBC的灵活性。在本实例中,我们将深入探讨Spring ...

    模仿spring jdbcTemplate的实现

    模仿spring jdbcTemplate的粗略实现,只有很小的参考价值,如果是java初学者可以使用这个封装好的工具进行数据库操作,只需要在db.properties里配置好driver,url等信息

    Spring JdbcTemplate例子

    Spring JdbcTemplate是Spring框架中的一个核心组件,主要用来简化数据库操作。它提供了一种模板方法设计模式,将SQL语句的执行与结果处理进行了抽象,使得开发者可以更加专注于业务逻辑,而无需关心底层数据访问的...

    Spring JdbcTemplate api

    ### Spring JdbcTemplate API:数据库操作的模板模式 #### 概述 在Spring框架中,`JdbcTemplate`是一个用于简化JDBC编程的工具类,它采用了模板模式来分离数据库访问中的不变和可变部分,提供了一种更加健壮且易于...

    spring的jdbcTemplate小案例

    JdbcTemplate是Spring提供的一种数据库操作工具,它简化了数据库访问,使开发者能够编写出更健壮、更易于维护的代码,避免了手动处理JDBC连接、预编译SQL语句等繁琐任务。 首先,我们来理解一下JdbcTemplate的基本...

    Spring 学习 JdbcTemplate,模板模式,回调

    JdbcTemplate是Spring提供的一个用于简化数据库操作的API,它是Spring对JDBC(Java Database Connectivity)的轻量级封装。通过使用JdbcTemplate,开发者可以避免编写大量的样板代码,如打开和关闭连接、处理结果集...

    spring jdbcTemplate 源码

    Spring JDBCTemplate是Spring框架中的一个核心组件,它提供了一种简化数据库操作的抽象层,使得开发者可以更加方便、高效地处理数据库事务。本篇将深入探讨Spring JDBCTemplate的使用及其源码解析,帮助你理解其背后...

    Spring JdbcTemplate.batchUpdate 例子

    总之,`Spring JdbcTemplate.batchUpdate`是处理批量数据库操作的强大工具,它可以提高效率,减少与数据库的交互次数。然而,正确地使用它需要对事务管理、异常处理和性能优化有深入的理解。通过合理的配置和良好的...

    spring连接数据库代码

    dbtest 是一个 JdbcTemplate 对象,用于执行数据库操作。dataSource 是一个 BasicDataSource 对象,用于提供数据库连接。 数据库连接配置 在 dataSource 中,我们定义了四个属性:driverClassName、url、username ...

    SSH笔记-Spring JdbcTemplate

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

Global site tag (gtag.js) - Google Analytics