`

spring MVC关闭自动提交事务改为手动提交

阅读更多
package com.wanrong.distribution.server.impl;

import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.util.StringUtils;
import com.wanrong.distribution.dao.AppUserDao;
import com.wanrong.distribution.share.dto.UserDTO;
import com.wanrong.distribution.share.interfaces.AppUserHierarchyService;
import com.wanrong.distribution.share.interfaces.AppUserService;
import com.wanrong.distribution.share.query.UserQuery;
import com.wanrong.module.commons.QueryResult;
import com.wanrong.module.commons.Result;
import com.wanrong.module.commons.SingleResult;
import com.wanrong.web.share.dto.EvidenceInfoDTO;
import com.wanrong.web.share.dto.MerchantInfoDTO;
import com.wanrong.web.share.dto.MerchantProudctDTO;
import com.wanrong.web.share.query.MerchantInfoQuery;
import com.wanrong.web.share.query.MerchantProudctQuery;

@Service("appUserService")
public class AppUserServiceImpl implements AppUserService {
    protected Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    AppUserDao appUserDao;
    @Autowired
    AppUserHierarchyService appUserHierarchyService;
    @Resource(name = "transactionManager")
    private PlatformTransactionManager platformTransactionManager;
   
    /**
     * 新增AppUser
     */
    public Result insertAppUser(UserDTO info){
        Result result = new Result();
        
        //关闭事务自动提交
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
        TransactionStatus status = platformTransactionManager.getTransaction(def);
        
        try {
            //插入用户
            appUserDao.insertAppUser(info);   
            
            //查询商户的父UserId
            int fatherUserId = 0;
            UserDTO userFather = appUserDao.queryAppUserBySpid(info.getParentSpId());
            if(!StringUtils.isEmpty(userFather)){
                fatherUserId = userFather.getId();
            }
            
            //插入商户层级关系
            Result rest = appUserHierarchyService.insertAppUserHierarchy(false,info.getId(),fatherUserId);
            if(!rest.isSuccess()){
                platformTransactionManager.rollback(status);    // 添加失败 回滚事务;
                result.setSuccess(false);
            }else{
                result.setSuccess(true);
                platformTransactionManager.commit(status);      //提交事务
            }
        } catch (Exception e) {
            result.setSuccess(false);
            platformTransactionManager.rollback(status);      //添加失败 回滚事务;
            logger.error("",e);
        }
        return result;
    }

    @Override
    public SingleResult<UserDTO> queryAppUser(UserQuery userQuery) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public SingleResult<UserDTO> queryAppUserBySpid(String spId) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public QueryResult<UserDTO> queryAppUserList(UserQuery query) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int queryMyAppUserCount(UserQuery query) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public Result updateAppUser(UserDTO userDTO) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Result uploadFile(EvidenceInfoDTO evidenceInfoDTO) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public QueryResult<MerchantProudctDTO> queryMerchantProductList(MerchantProudctQuery query) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public SingleResult<MerchantInfoDTO> queryMerchantInfo(MerchantInfoQuery query) {
        // TODO Auto-generated method stub
        return null;
    }
}

 

分享到:
评论

相关推荐

    精通Spring MVC 4

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...

    spring框架手动提交事务,jdbctample

    注意:只是jdbc自带的jdbctample,不能 用于整合mybatis框架的事务,我整合了,事务不起作用!!!! 按老师的说法是基于xml方式,但不准确,因为也用到了注解 &lt;aop:aspectj-autoproxy proxy-target-class="true"&gt;...

    精通Spring MVC 4 中文

    精通Spring MVC 4 中文

    spring mvc 官方文档

    本文详细介绍spring MVC的原理和开发心得体会。

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    spring mvc实例项目

    运用extjs2和spring mvc的项目,非常具有学习价值,里面有一套非常好用的jdbc技术.

    spring mvc源代码

    spring mvc4.1.4 源代码 spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码

    [免费]Spring MVC学习指南(高清)

    Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

    Spring MVC 入门实例

    首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...

    Spring MVC jar包

    关于构建Sping MVC的Jar包,包括Sping2.5.6和Hibernate3.6.8

    Spring MVC 4.2.3

    Spring mvc jar包

    Spring MVC所需jar包

    Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包

    Servlet JSP和Spring MVC初学指南

    Servlet JSP和Spring MVC初学指南

    前期项目 Spring+Spring MVC+JDBC Template 增删改查

    前期项目 Spring+Spring MVC+JDBC Template 增删改查,包含建库,前端加后台

    Spring MVC+MyBatis开发从入门到项目实战

    《Spring MVC+MyBatis开发从入门到项目实战》对框架的介绍通俗易懂,由浅入深,结合实例展示,为读者的入门提供了有力的帮助,且为以后的技术提升打下坚实的基础。《Spring MVC+MyBatis开发从入门到项目实战》适用于...

    spring MVC数据绑定大全

    spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便 本人最开始也是这么认为 经过一段...

    大优惠 Spring MVC学习指南(第2版)2017.pdf

    Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

    spring mvc

    spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。

Global site tag (gtag.js) - Google Analytics