当前位置:首页 > 开发 > 编程语言 > Spring > 正文

spring入门实例-DAO,事务

发表于: 2012-07-27   作者:blackproof   来源:转载   浏览次数:
摘要: spring入门实例-DAO,事务   实例: 配置文件: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation

spring入门实例-DAO,事务

 

实例:

配置文件:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

	<bean name="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">

		<property name="driverClassName">
			<value>oracle.jdbc.driver.OracleDriver</value>
		</property>

		<property name="url">
			<value>jdbc:oracle:thin:@192.168.32.227:1521:orcl</value>
		</property>

		<property name="password">
			<value>lpromis</value>
		</property>

		<property name="username">
			<value>lpromis</value>
		</property>
	</bean>
	
	<bean id="transactionManager"
	class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSource"></ref>
		</property>
	</bean>
	
	<bean id="userDAO"
	class="com.myspring.bussiness.CustomerDAO">
		<property name="dataSource">
			<ref bean="dataSource"></ref>
		</property>
		<property name="transactionManager">
			<ref local="transactionManager"></ref>
		</property>
	</bean>

</beans>

 实例中的事务使用的是DataSourceTransactionManager实现的,并且向其中注入了datasource

bean代码:

public class CustomerDAO
{
	/**
	 * datasource
	 */
	private DataSource dataSource;
	public void setDataSource(DataSource dataSource)
	{
		this.dataSource = dataSource;
	}
	public void setTransactionManager(PlatformTransactionManager transactionManager)
	{
		this.transactionManager = transactionManager;
	}
	/**
	 * 事务管理类,初始化已将datasource作为参数
	 */
	private PlatformTransactionManager transactionManager;

	
	/**
	 * 普通使用事务的方法 
	 * 定义事务
	 * 记录事务点
	 * 提交事务点/回滚事务点
	 */
	public void insertCustomer()
	{
		DefaultTransactionDefinition def = new DefaultTransactionDefinition();
		TransactionStatus status = transactionManager.getTransaction(def);
		try
		{
			JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSource);
			jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000023','testname1')");
			jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000023','testname2')");
			jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000025','testname3')");
			transactionManager.commit(status);
		}
		catch (Exception e)
		{
			transactionManager.rollback(status);
			System.out.println("*********roll back");
		}
	}
	
	/**
	 * 事务模板,无返回值
	 */
	public void insertCustomerTamplate()
	{
		TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
		transactionTemplate.execute(new TransactionCallbackWithoutResult(){

			@Override
			protected void doInTransactionWithoutResult(TransactionStatus arg0)
			{
				// TODO Auto-generated method stub
				JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
				jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000023','testname4')");
				jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000024','testname5')");
				jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000025,'testname6')");
			}
		});
	}
	
	/**
	 * 事务模板,带有返回值
	 */
	public void queryCustomerTamplate()
	{
		TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
		Object result = transactionTemplate.execute(
				new TransactionCallback<Object>()
				{
					@Override
					public Object doInTransaction(TransactionStatus arg0)
					{
						JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
						jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000023','testname4')");
						jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000024','testname5')");
						jdbcTemplate.update("insert into t_lpromis_yxgl_khxx(id,khqc) values('000025','testname6')");
						List<Map<String,Object>> rows = jdbcTemplate.queryForList("select eee from t_lpromis_yxgl_khxx");
						return rows;
					}
				});
		if(result instanceof List)
		{
			List re = (List) result;
			for (int i = 0; i < re.size(); i++)
			{
				Map<String,Object> one = (Map<String, Object>) re.get(i);
				System.out.println(one.get("id"));
			}
		}
	}
	
	public static void main(String[] args)
	{
		ApplicationContext context = new ClassPathXmlApplicationContext("com/myspring/bussiness/transactionManager.xml");
		CustomerDAO cd = (CustomerDAO) context.getBean("userDAO");
		cd.queryCustomerTamplate();
	}
}
 以上用 JdbcTemplate实现的jdbc的一系列操作,以及设置事务,其中的sql语句故意错误,验证事务rollback效果

spring入门实例-DAO,事务

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
概述: springmvc 框架围绕DispatcherServlet这个核心展开,DispatcherServlet是Spring MVC的总控制
有时为了保证一些操作要么都成功,要么都失败,这就需要事务来保证。 传统的jdbc事务如下: @Test pu
有时为了保证一些操作要么都成功,要么都失败,这就需要事务来保证。 传统的jdbc事务如下: @Test p
Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用。这一章先从Spring的IoC开始
Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用。这一章先从Spring的IoC开始
Spring中IoC的入门实例 原文:http://dev.yesky.com/400/2508400.shtml#top   Spring的模块化是很
天温习spring的事务处理机制,总结如下 对于SQL事务的概念以及ACID性质,可以参见我的另一篇博文 ht
背景介绍 目前系统正在进行代码重构前期预研工作,目标采用spring控制事务以减少开发代码量,提高开
实现一个spring 的登陆事例 1.在eclipse下新建动态网页工程springmvc 2.需要导入jar包. aopalliance.
实现一个spring 的登陆事例 1.在eclipse下新建动态网页工程springmvc 2.需要导入jar包. aopalliance.
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号