ssm的事物回滚实现

Spring/SpringMVC/MyBatis整合+事务回滚 Spring/SpringMVC/MyBatis整合,可事务回滚 立即下载

ssm的事物回滚实现

案例

事物回滚操作对于现在的我来讲,真是很少用到,但它的确是一个很实用的办法,特别是一次性要处理某一个用户的多条数据时;

最近我就接触过一个这样的操作:

业务是设置隐私保护,默认是无隐私保护的,用户在隐私设置页面不勾选的就会将用户数据保护起来,只能通过扫码验证才能访问;

实现改操作使用事物回滚的原因:

用户隐私保护设置数据并不是全部数据,仅仅只是未选中的,也就是说:数据库保存的只是用户设置有保护的数据;

用户点击保存的时候,传过去的数据根据id去查有没有这条数据的记录,之后有的就保存(不做修改),没有的就删除,但这样太繁琐;

所以我选择先根据用户id清空用户以前的数据,再根据用这次保存的数据进行插入操作,重新创建改用户的隐私保护设置;

这样删除和新增就绑在了一起,要他们同时成功才算书屋成功,若有一个发生错误,则要执行回滚操作.


配置文件开启事物控制

我这就不展示全部配置,只搞出个重点!



controller代码

这里直接将json数据变成了对象集合,实现的操作可以看我上一篇笔记:
http://blog.youkuaiyun.com/java_trainee/article/details/74479737

// 保存用户隐私设置
    @RequestMapping ("/savaUserGenPrivacySet")
    @ResponseBody
    public String savaUserGenPrivacySet (HttpServletResponse response, HttpServletRequest request)
    {
        try
        {
            request.setCharacterEncoding ("utf-8");
            response.setCharacterEncoding ("utf-8");
        }
        catch (UnsupportedEncodingException e)
        {
            _logger.error (e.getMessage ());
        }
        // 返回数据的容器
        Map <String, Object> resultMap = new HashMap <String, Object> ();
        Long userid = Long.parseLong (request.getParameter ("userid"));
        try
        {
            UserGenPrivacy userGenPrivacy = new UserGenPrivacy ();
            userGenPrivacy.setUserid (userid);
            String jsonArrStr = request.getParameter ("JSONArrStr");
            JSONArray arr = JSONArray.fromObject (jsonArrStr);
            List <UserGenPrivacy> userGenPrivacys = JSONArray.toList (arr, new UserGenPrivacy (), new JsonConfig ());
            boolean isOk = _privacyProtectService.savaUserGenPrivacySet (userGenPrivacy, userGenPrivacys);
            String msg = "";
            if (isOk)
            {
                msg = "设置保存成功!";
            }
            else
            {
                msg = "设置保存失败!";
            }
            resultMap.put ("result", msg);
        }
        catch (Exception e)
        {
            _logger.error ("用户通用隐私设置保存失败", e);
        }
        JsonConfig config = new JsonConfig ();
        config.registerJsonValueProcessor (Date.class, new JsonDateValueProcessor ("yyyy-MM-dd"));
        return JSONObject.fromObject (resultMap, config).toString ();

    }

service

这里的注解@Transactional (propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)很重要,
现在只要该方法出现了异常就会发生回滚
/**
     * 
     * 保存(新增)用户隐私设置(通用隐私设置)
     * 
     * @param userGenPrivacy[提供userid,List <UserGenPrivacy>实体对象(实际保存数据)]
     * @return boolean(true:成功;false:失败)
     */
    @Transactional (propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
    public boolean savaUserGenPrivacySet (UserGenPrivacy userGenPrivacy, List <UserGenPrivacy> userGenPrivacys)
    {
        // 清空用户隐私设置的数据
        _logger.info ("清空用户隐私设置数据:");
        try
        {
            _userGenPrivacyMapper.cleanUserGenPrivacySet (userGenPrivacy);
        }
        catch (Exception e)
        {
            _logger.error ("清空用户隐私设置数据异常:", e);
            return false;
        }
        _logger.info ("保存用户隐私设置数据:");
        try
        {
            for (UserGenPrivacy userGenPriSet : userGenPrivacys)
            {
                _userGenPrivacyMapper.savaUserGenPrivacySet (userGenPriSet);
            }
        }
        catch (Exception e)
        {
            _logger.error ("保存用户隐私设置数据异常:", e);
            return false;
        }
        return true;
    }



Spring+Mybatis整合事务回滚 花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表语句见txt文件。 立即下载

相关推荐

拜耳阵列(Bayer Pattern)以及常见彩色滤波矩阵(CFA)

本文介绍了拜耳阵列的工作原理(Bayer Pattern)以及常用的彩色滤波矩阵(CFA)

风一样的男子(quinta)的博客 7122

SSM - 事务回滚(注解方式实现)

文章目录MYSQL 表的类型必须是 INNODB 才支持事务。核心代码在配置文件注册事务管理器和开启注解驱动在 Service 实现类编写方法并使用注解完整 Demo MYSQL 表的类型必须是 INNODB 才支持事务。 MYSQL 表的类型必须是 INNODB 才支持事务。 在 Mysql 中,只有当表的类型是 INNODB 的时候,才支持事务,所以需要把表的类型设置为 INNODB, 否则无...

TravelerTD_剑,酒与行者 4254

LinuxCNC---在PC端显示开发板LinuxCNC界面

  今天在调试开发板时,执行开发板上的linuxcnc指令,总是出现如下报错 LINUXCNC - 2.9.0~pre0 application-specific initialization failed: couldn't connect to display "192.168.137.3:1" Error in startup script: invalid command name "image" while executing "image create photo -file $f/$i

中华田园巨龙 3471

Spring中@Transactional事务回滚(含实例详细讲解,附源码)

一、使用场景举例在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用。下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员。但是在执行的时候可能会出现这种情况,我们先删除部门,再删除成员,但是部门删除成功了,删除成员的时候出异常了。这时候我们希望如果成员删除失败了,之前删除的部门也取

小宝鸽 14万+

STM32F411CEU6实战:用W25Q64存储多张图片,在240x240 LCD上轮播显示(附源码)

本文详细介绍了如何使用STM32F411CEU6通过SPI接口管理W25Q64 Flash中的多张图片,并在240x240 LCD上实现平滑轮播显示。内容涵盖硬件配置、图片存储方案设计、轮播系统实现及性能优化技巧,特别针对SPI传输优化和多图存储管理提供了实用解决方案。附源码,适合嵌入式开发者参考。

weixin_32025789的博客 309

使用菱FX5U系列PLC实现以太网通信的具体方法示例

接下来,我们将创建一个简单的CPU通信功能,以实现与其他设备的以太网通信。在上述代码中,我们首先设置访问号,然后创建一个数据读取命令(M_READ)和一个数据写入命令(M_WRITE)。此外,在实际应用中,您还需要确保PLC和其他设备之间的网络连接正常,并且遵循相应的通信协议。在上述代码中,我们执行了数据读取命令,并将接收到的响应存储在M_RESPONSE变量中。通过简单CPU通信功能,菱FX5U系列PLC可以实现与其他设备的以太网通信。我们将提供相应的源代码和详细的说明,以帮助您轻松实现这一功能。

DevCyberX的博客 1527

SSM框架学习-Spring事务

ssm笔记

qq_45681515的博客 592

YOLOv11半监督学习深度解析:基于FixMatch改进的先进目标检测框架

本文探讨了半监督学习与YOLOv11结合的创新方法。针对目标检测中半监督学习面临的伪标签质量不稳定、特征一致性难保证等挑战,研究提出改进版FixMatch框架。通过分析YOLOv11架构特性(如多尺度特征提取、双标签分配策略等)与半监督学习的适配性,设计了三项关键技术改进:空间感知阈值策略、多任务解耦处理和记忆增强机制。该方法在少量标注数据下可实现接近全监督的性能,显著降低工业检测等场景的数据标注成本。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 2086

ssm架构中的事务回滚

//发布网店记录: @Transactional public int SaveShopRec(Shops shop) throws Exception { try { //1).保存网店记录产生自增长ID: int res1 = shopDao.Master_SaveShopRec(shop); //2).保存(网店)附属信息: Shopsub s...

qq_38331606的博客 542

【AI大模型】角色设定:给模型定身份的高效使用方法

摘要: AI大模型角色设定(RolePrompting)是提示词工程的核心优化技巧,通过赋予模型特定职业、领域和风格约束,显著提升输出专业度与适配性。文章系统拆解了角色设定的原理、万能公式(领域+身份+技能+风格+场景)、三级分层写法(基础/进阶/专家),并提供10类高频场景的模板。通过无角色与有角色输出的对比实验(Python代码量化验证),证明角色设定可使模型综合得分提升35%以上,尤其优化场景适配度与风格统一性。该技巧作为高阶提示词(如CoT、Few-Shot)的前置模块,能以零成本实现AI输出的专业

unber的博客 48

go语言实现服务器server端与客户client端即时通信(附完整源码)

go语言实现服务器server端与客户client端即时通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 629

SSM框架中的事物回滚(delete,insert)

一:注解实现 1、删除的测试: 说明:删除会员表(t_driver)中的会员信息的时候,并且将他的账户表(t_driver_account)中的信息删除 (1)首先是两个删除接口的准备,准备实现的事物逻辑是:先执行第一步会员的删除,如果会员的删除是失败的话,下面的删除就直接不用执行;当会员的删除执行成功之后,如果后面的删除失败的话,就会出现事物的回滚,会员表的信息也会随之...

weixin_30384217的博客 276

使用Navicat连接Oracle数据库及ORA-12541: TNS: 无监听程序、ORA-28547:connection to server failed、ORA-12514:TNS报错解决方案

使用Navicat连接Oracle数据库及ORA-12541: TNS: 无监听程序、ORA-28547:connection to server failed、ORA-12514:TNS报错解决方案。

蓝多多的小仓库 5219

ssm mysql 事物_SSM - 事务回滚(注解方式实现)

SSM - 事务回滚(注解方式实现)发布时间:2018-12-09 18:44,浏览次数:913, 标签:SSM文章目录* MYSQL 表的类型必须是 INNODB 才支持事务。* 核心代码 * 在配置文件注册事务管理器和开启注解驱动* 在 Service 实现类编写方法并使用注解* 完整 Demo <>MYSQL 表的类型必须是 INNODB 才支持事务。MYSQL 表的类型必须是 ...

weixin_28811055的博客 344

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java SSM多操作注解回滚

在业务操作时难免会遇到一个业务多操作,会用到事物回滚这里写了一个简单的多操作失败事物回滚案例 在这之前你需要在你的applicationContext-mybatis.xml中配置: <!-- 事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSour...

weixin_34007291的博客 240

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ssm的事物回滚简解

一场景:希望一个cotroller方法中调用的所有方法一个抛出问题全部数据库的操作回滚 项目环境:ssm项目 解决方法: spring的事物管理可以使controller调用的service的实现类使用的所有dao层数据库操作出错发生回滚。 而controller调用多个service方法sercive方法之间并不会发生关联回滚的操作。 不配置spring事物回滚的方法,回滚只发生在一个

Alice_qixin的博客 704

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ssm的事物回滚@Transactional

ssm的事物回滚@Transactional 一、使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用。下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员。但是在执行的时候可能会出现这种情况,我们先删除部门,再删除成员,...

stay hungry ! stay foolish! 815

SSM框架——以注解形式实现事务管理---简单说明

spring+spring MVC+mybatis 框架整合添加spring 注解式事务。

it_java_shuai的博客 475

ssm发生异常后无法回滚

关于ssm整合的时候spring管理事务总是自动提交 在使用spring整合mybatis时,由于不能用到sqlSession来对事物进行管理,必须要利用spring框架对Service进行事务管理。 但是发现自动管理的时候,即使出现了异常,它也还是自动提交,如下: @Transactional @Service("studentService") public class StudentSer...

qq_42986414的博客 365

ssm整合注解事物

ssm整合事物的时候,事物没有生效,不能回滚,需要在配置springMVC配置文件的时候, 取消扫描service

q596333033的博客 346

ssm中文 mysql 事物_SSM实现transaction事务管理

因为接下来的项目是用的SSM框架,所以这几天一直在搞各种细节。SSM的事务管理(下面提到的都是我自己的项目中文件的名称):首先要在applicationContext.xml中配置:class="org.springframework.jdbc.datasource.DataSourceTransactionManager">这个tx的配置开始一直报错,后来各种查,先是找jar包,Sprin...

weixin_28197941的博客 260

java8 异步请求 回滚,java SSM多操作注解回滚

在业务操作时难免会遇到一个业务多操作,会用到事物回滚这里写了一个简单的多操作失败事物回滚案例在这之前你需要在你的applicationContext-mybatis.xml中配置:下面这段代码是一个简单删除操作,删除的时候传入的Product类的对象pro只赋值了id其他字段并未赋值在先写了一个删除操作后面跟了一个新增商品的操作(这个操作很明显是错误的会因为对象属性未赋值插入错误)在多操作是用 t...

weixin_34887818的博客 742

@Transactional 事务回滚 总结

方法是不是 public 修饰的 是否是同一个类中的方法调用(如A方调用同一个类中的B方法,在B方法上加的事务)。 异常类型是否为unchecked异常?如果想check异常也想回滚怎么办,注解上面写明异常类型即可。 @Transactional(rollbackFor=Exception.class) 类似的还有 norollbackFor,自定义不回滚的异常 异常是不是被catch住了,如果既要打出异常日志,又要回滚,如下: @Transactional(rollbackFor = Exce.

超人的博客 1954

ssm 将事物加到service层

最近做了一个app后台,框架用的是ssm,在做的时候遇到一个问题,希望在这里记录一下,防止以后再有同样的错误 平时大家都是在给dao层直接加的事物 <bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <prope...

weixin_32885733的博客 790

java 事务回滚注解_java SSM多操作注解回滚

在业务操作时难免会遇到一个业务多操作,会用到事物回滚这里写了一个简单的多操作失败事物回滚案例在这之前你需要在你的applicationContext-mybatis.xml中配置:下面这段代码是一个简单删除操作,删除的时候传入的Product类的对象pro只赋值了id其他字段并未赋值在先写了一个删除操作后面跟了一个新增商品的操作(这个操作很明显是错误的会因为对象属性未赋值插入错误)在多操作是用 t...

weixin_39616071的博客 458

ssm整合怎么处理事务?

ssm整合怎么处理事务 添加@Transactional注解 1、@Transactional的作用 2、如果不管出现什么异常 都要回滚 应该怎么处理? 3、添加了@Transactional注解 代码中出现了异常 但是没有回滚 可能的原因是什么?

m0_69028447的博客 2213
上一篇: 前台js数组json字符串,后台json字符串转为json数组,最后转换成集合的具体实现
下一篇: springmvc常用注解标签详解
java_trainee
博客等级 码龄10年 12粉丝 22原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值