`

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框架依赖全面jar

    Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...

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

    在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建可维护、模块化和松耦合的应用程序提供了一种强大的方式。本项目聚焦于Spring、Spring MVC和JDBC Template的集成应用,用于实现数据库的增删改查操作。...

    spring-spring mvc-mybaties整合dome

    Spring MVC是Spring框架的一部分,专为构建Web应用程序而设计,它提供了模型-视图-控制器(MVC)架构模式的实现。MyBatis则是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。将这三个框架整合在一起...

    Spring-MVC的demo

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本示例中,"Spring-MVC的demo" 提供了一个完整的Spring MVC学习项目,包含了数据库操作、JDBC...

    spring MVC spring my batis SSM框架工程

    总之,Spring MVC、Spring和MyBatis的组合为商城购物平台提供了强大的功能支持,包括用户界面处理、业务逻辑管理和数据持久化。开发者可以通过灵活配置和扩展,构建出高效、稳定且易于维护的电商平台。

    spring mvc+spring+mybatis架构实例

    这个架构结合了Spring MVC的MVC设计模式、Spring框架的依赖注入与事务管理,以及Mybatis的灵活数据库操作,形成了一套强大的开发工具集。下面我们将详细探讨这些关键知识点。 **Spring MVC** Spring MVC是Spring...

    spring mvc 基础框架,自动生成源码 开发效率非常高

    在Spring MVC项目中,这类工具可以帮助开发者自动生成常见的CRUD操作代码,针对单个数据表创建增删改查的控制器、服务、DAO及实体类,减少了手动编写这些重复代码的时间。这样的功能在处理大量简单业务逻辑时尤其...

    Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现.rar

    Spring MVC负责Web层的交互,Spring负责业务层的管理和事务控制,MyBatis则简化了数据库操作,而Redis作为缓存系统,提升了系统的响应速度和整体性能。这四个组件的协同工作,使得开发者能够快速、稳定地构建大型、...

    Spring+MVC增删改查.rar

    总的来说,"Spring+MVC增删改查.rar"提供的内容可能包括了Spring MVC的配置文件、控制器类、模型类、数据库相关的配置以及一些简单的JSP视图。这些文件将共同演示如何在Spring MVC环境中实现基本的CRUD操作,对于...

    (最新)spring+spring mvc+mybatis 整合需要的jar包

    Spring MVC是Spring框架的一部分,专为构建Web应用程序而设计。它遵循模型-视图-控制器(Model-View-Controller,MVC)设计模式,将业务逻辑、数据处理和用户界面分离。Spring MVC通过DispatcherServlet作为前端控制...

    基于主流技术(Springboot、Spring MVC.zip

    标题 "基于主流技术(Springboot、Spring MVC)" 暗示了我们即将探讨的是关于使用Spring框架构建Web应用程序的知识,特别是Spring Boot和Spring MVC这两个关键组件。Spring Boot简化了Spring应用的初始设置和配置,...

    spring +spring mvc+mybatis +bootstrap 基本整合

    在IT行业中,Spring框架是一个广泛使用的Java应用开发框架,它为构建企业级应用程序提供了全面的解决方案。Spring框架的核心是依赖注入(Dependency Injection,DI),它允许开发者松耦合地管理对象之间的关系。...

    spring MVC整合实例

    在这个"spring MVC整合实例"中,我们将探讨如何将 Spring MVC 与 Oracle 10g 数据库相结合,以及使用注释方式进行配置。 1. **Spring MVC 基础**: - **DispatcherServlet**:Spring MVC 的核心组件,它作为前端...

    spring MVC3 + mybatis 3 - demo工程

    总结来说,这个"spring MVC3 + mybatis 3 - demo工程"为初学者和开发者提供了一个实战平台,展示了Spring MVC3与MyBatis3如何协同工作,帮助他们快速理解和应用这两个框架。通过研究和实践这个Demo,可以加深对Web...

    Java+maven+spring MVC+Spring+Hibernate整合

    本项目标题为"Java+maven+spring MVC+Spring+Hibernate整合",它旨在演示如何利用这些技术来创建一个完整的Web应用程序框架。下面将详细阐述其中涉及的技术及其整合过程。 首先,Maven是Apache软件基金会开发的一款...

    图书管理系统(Spring + Spring MVC + MyBatis)源码.rar

    Spring MVC是Spring框架的一部分,专为构建Web应用程序设计。它采用模型-视图-控制器(Model-View-Controller,MVC)设计模式,将业务逻辑、数据处理和用户界面分离,提高了代码的可维护性和可扩展性。在Spring MVC...

    09_《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》.0.zip

    通过深入学习这些内容,你将具备构建高效、可维护的Java EE企业级应用的能力,能够灵活运用Spring、Spring MVC和MyBatis这三个框架,为你的职业生涯奠定坚实的基础。同时,配套的PPT将帮助你直观地理解各个概念和...

    Spring MVC+ibatis+oracle框架整合

    在"Spring MVC+ibatis+Oracle资源整合,实现简单的增删改查"的项目中,开发者可能已经创建了学生(stu)相关的实体类、Mapper接口、XML配置文件和DAO实现。例如,"stu"可能是学生表的名称,对应的实体类为Student,...

    基于spring+spring mvc+mybatis的图书管理系统源码

    Spring MVC是Spring框架的一部分,专为构建Web应用程序而设计。它提供了一种模型-视图-控制器(MVC)架构模式的实现,用于分离业务逻辑、用户界面和数据访问。在图书管理系统中,Spring MVC处理HTTP请求,调用业务...

    Spring3.0MVC注解+SringJdbcDaoSupport案例

    2. **声明式事务管理**:Spring AOP可以用来实现声明式事务管理,开发者只需在方法上添加`@Transactional`注解,Spring就会自动管理事务的开始、提交、回滚。这种方式简化了事务管理,使得代码更加整洁。 在实际...

Global site tag (gtag.js) - Google Analytics