在使用mybatis时进行批删除或批添加用到的service层事务的理解

原创 2016年05月31日 16:30:29

事务重新理解:在执行批添加或批删除时  如果有10条数据需要处理,关系表和主键表  ,关系表操作完毕之后,在操作主键表时报错了,就需要将关系表数据复原,需要回滚事务(callback),而在这时,一个service代表一个事务,,在框架中一般在配置文件中配置了事务

<!-- 配置当出现Exception、RuntimeException、Exception时采用对应的事务操作 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="delete*" propagation="REQUIRED"
				read-only="false" rollback-for="java.lang.Exception"
				no-rollback-for="java.lang.RuntimeException" />
			<tx:method name="insert*" propagation="REQUIRED"
				read-only="false" rollback-for="java.lang.RuntimeException" />
			<tx:method name="update*" propagation="REQUIRED"
				read-only="false" rollback-for="java.lang.Exception" />
			<tx:method name="find*" propagation="SUPPORTS" />
			<tx:method name="get*" propagation="SUPPORTS" />
			<tx:method name="select*" propagation="SUPPORTS" />
		</tx:attributes>
	</tx:advice>

在service类里以此种方式命名即为一个事务。


本人在处理以下业务时(效果好使,但是编码思路不对)

/**
	 * 条件删除 第二步:执行批量删除
	 */
	@SuppressWarnings("rawtypes")
	@RequestMapping("/deleteDispatchRuleByconditionNext")
	public String deleteByconditionNext(HttpServletRequest req,HttpServletResponse resp,Page page,WoDispatchRule dispatchRule,Model model){
		/**通过筛选条件查找出符合条件的规则**/
		page = SearchUtil.getQueryCondition(req, "deleteDispatchRuleBycondition", dispatchRule, page);
		page = dispatchRuleService.findDispatchRuleList(page);
		if(page.getData().size()>0){
			for(int i=0;i<page.getData().size();i++){
				WoDispatchRule dispatchRule2 = (WoDispatchRule)page.getResult().get(i);
				dispatchRule.setRuleId(dispatchRule2.getRuleId());
				dispatchRuleService.deleteById(dispatchRule);
			}
		}		
		model.addAttribute("message", "success");
		return "/workorder/result";
	}  

第一:查询结果集是从page中取得,但是page.data是分页后的结果,所以是不完全结果集

第二:删除没有事务  一个service方法是一个事务,因为此部分代码写在了action里


版权声明:本文为博主原创文章,未经博主允许不得转载。

修改hosts进入google世界

转载请标明出处: http://www.weyye.me/detail/my-google-search/ 本文出自:【Wey Ye的博客】 前言自从google退出中国市场后,很多人使用百度搜...

java8新特性——函数式编程(stream/map)

今天看代码,发现部分字符串处理使用的是jdk8的新特性,非常简洁。从网上找了教程,方便以后编程使用。 package com.mavsplus.java8.turtorial.streams...

使用Spring(13)Spring与MyBatis整合(二)DataSourceTransactionManage把事务控制在Service层

1.jar包 2.层次结构 3.applicationContext.xml

mybatis整合spring、springmvc时业务层无法进行事务回滚问题解决

前言:近期换了新公司,刚来公司就接触了一下mybatis,因为springmvc和spring比较熟悉,我想大概现在绝大部分的公司都在用吧,刚接触mybatis时感觉真心蛋疼,纯sql才处理业务,实在...

service层@Transactional事务控制使用以及注意

@Service @Transactional public class CeshiService { @Autowired LoginFeignClient loginFeign...

spring+mybatis通用dao层、service层的一些个人理解与实现

1、现在的绝大多数web应用,通常都以action、service、dao三层去组织代码,这样划分结构很清晰,分工明确 2、一般情况下,我们会把事务控制在service层。 3、action和dao层...

spring+mybatis通用dao层、service层的一些个人理解与实现

首先声明,本文所述只是鉴于本人在开发一些应用时的心得,仅供参考。 1、现在的绝大多数web应用,通常都以action、service、dao三层去组织代码,这样划分结构很清晰,分工明确 2...

java-mybatis、springmvc 整合,使用 @Transactional 时遇到的事务相关问题

java-mybatis、springmvc 整合,使用 @Transactional 时遇到的事务相关问题 目标:用最简单的配置,使用 spring @Transactional 注解管理...

Service层进行事务管理,Dao层获得session进行事务处理抛异常的情况

1.  spirng中配置service层的事务管理        在一个web项目中,如果使用SSH框架,一般在spring中配置事务管理。我们一般不会在dao层使用transaction,事务被...
  • dulzihi
  • dulzihi
  • 2014年01月20日 23:04
  • 1692

MyBatis与spring的整合-添加事务-src.zip

  • 2013年10月20日 20:03
  • 11.59MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在使用mybatis时进行批删除或批添加用到的service层事务的理解
举报原因:
原因补充:

(最多只允许输入30个字)