JFinal DB.tx()事务

2023-11-19

1.发现问题

(1)功能实现逻辑

添加一个新的系统的时候
①先添加系统本身,即名称,地址,简介,将这些存入system表,得到system_id
②添加系统所处的服务器(由于有专门的添加服务器功能,所以这里的服务器只用填地址,如果地址对应服务器不存在,就会提示:该服务器不存在,请先添加服务器),根据服务器地址找到server_id,然后将system_id和server_id存到系统服务器的关联表system_server中
③将管理账号根据system_id存入account表中
如果一切顺利,那就可以成功添加系统

(2)在以下场景时出现问题

如果在2中,用户输入了一个不存在的服务器地址,填完所有信息后一提交,那后端就会完成步骤1和部分步骤2,即创建了系统,也将系统部署到一部分服务器上了,但在遇到了这个不存在的服务器后,return错误信息,那用户在看到错误信息---该服务器不存在后进行修改服务器地址,再点提交,这个时候系统已经存在表中了,那就会添加失败,提示系统已存在,那这个对用户来说是很不合理的反馈,应该怎么解决呢?

---controller初始代码

2.解决方法

(1)保证不会出现上述场景

即对前端的逻辑进行修改,用户在添加系统所处服务器时,不是自己随便输入服务器地址,而是使用下拉选框的形式,用户只能从已有的服务器中选择,保证了服务器的存在,可以让这个系统成功顺利的添加

(2)在出现以上场景时正确处理

这里使用的是jFinal框架,它提供了封装好的事务回滚功能:Db.tx()

①基本逻辑

在存入数据库时如果需要一次插入多条数据,就要用到事务,即一旦这一批插入中出现错误,那就会回滚事务,不存在插入了一部分还有一部分没有插入的情况。

Db.tx()会返回布尔类型,return false或者有异常抛出都会自动回滚事务,return true才会提交事务

②基本用法

开发文档中的演示

PS:最开始没有看开发文档,直接百度的,结果啥都不懂,在controller层写的Db.tx(),一点效果都没有...,看了文档之后才搞明白是要在service层写,然后就在service层集中写了addSystem(String list)方法,list就是前端传的JSON字符串,最终效果挺好的

③具体应用

---server层

---controller层

3.最终效果

成功实现了添加系统这个过程的完整一致性,不存在系统添加了但是添加服务器关联失败这样的情况了。这种表单的提交在现实中应用也是很广泛的,所以不能全靠前端逻辑设计来保证功能不会出错,事务,我记住你了哈哈哈

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JFinal DB.tx()事务 的相关文章

随机推荐

  • 【前端】菜单栏设计(html、css)

    先展示一下效果图 目录 一 代码 1 1 html 1 2 css 二 代码分析 2 1 浏览器配置 2 1 1 normalize css 2 1 2 html5shiv 2 2 html分析 2 css解析 一 代码 1 1 html
  • 源文件字符集,编译器内部字符集,执行字符集,控制台乱码问题,Qt中文问题

    源文件字符集 源文件本身也是文本文件 所以源文件字符集是指源文件保存时采用哪种字符集编码 VC 下源文件默认是gbk编码 如果想要更改 可以通过 文件 高级保存选项 修改某个源文件的编码方式 似乎没有什么选项能够设置创建项目时的源文件编码
  • 如何编写测试用例

    文章目录 测试用例的内容 等价类 边界值分析法 流程分析法 判定表法 正交试验法 测试用例的内容 用例编号 用于唯一的识别用例 能够根据用例编号识别我们测试所属的产品 模块 测试阶段等 一般格式为 A B C D A 一般用来表示产品或者项
  • Heating Up (单调栈,在环上选择一个点为起点,若有一边权值小于当前值,则吃掉那个点并获得相应贡献)

    https codeforces com gym 104064 problem H include
  • js计算两日期相差的天数、月数

    返回两个日期相差的月数function MonthsBetw date1 date2 date1和date2是2019 3 12格式 用 分成数组 date1 date1 split date2 date2 split 获取年 月数 var
  • 8086乘法指令MUL,IMUL

    对于加减指令来说CPU对有符号加减和无符号加减一视同仁 根据我们需要把它作为有符号的结果还是无符号的结果 但是乘除法指令区分有符号乘除和无符号乘除指令 无符号数乘法指令MUL MULtiply MUL OPRD OPRD可以用除立即数以外的
  • AD15设置覆铜与边框尺寸

    铺板铜边到的间距要比到其它的间距的优先级要高
  • 修改 placeholder 样式,placeholder 换行 以及iOS 上设置placeholder被遮挡

    修改placeholder样式 通过选择器就可以简单的修改该placeholder的样式 input placeholder font size 14px color 666666 placeholder 换行 在input 里面很少用到
  • Spring的@Autowired注解原理分析

    一 Autowired的作用 Autowired常用来作属性的注入 可以作用在构造方法 普通方法 字段 注解 参数上 将构造函数 字段 设置方法或配置方法标记为由Spring 的依赖注入工具自动装配 Autowired注解做过开发的肯定都很
  • linux 远程管理ssh sz/rz

    sentos7 连接配置 安装sentos7 自行安装sentos7 建议使用virtualBox创建 服务端安装openssh server 检查是否已经安装openssh server vagrant localhost yum lis
  • 学习笔记Controller

    转自 http elim iteye com blog 1753271 谢谢博主分享 SpringMVC Controller 介绍 一 简介 在SpringMVC 中 控制器Controller 负责处理由DispatcherServle
  • 【Git

    个人格言 时间是亳不留情的 它真使人在自己制造的镜子里照见自己的真相 Git专栏 Git篇 JavaScript专栏 js实用技巧篇 该专栏持续更新中 目的是给大家分享一些常用实用技巧 同时巩固自己的基础 共同进步 欢迎前来交流 你的一键三
  • 树莓派配置热点官网操作指引

    参考官方原说明链接 https www raspberrypi org documentation computers configuration html enable routing and ip masquerading 1 安装接入
  • virt-manger创建虚拟机及virtio网卡

    可以把创建的vm node及network的xml文件导出来存放 以后可以使用命令创建 sudo apt get install qemu kvm virsh define vm0 xml 导入虚拟机配置 virsh start vm0 开
  • C++之多态详解

    文章目录 前言 一 多态的概念 概念 二 多态的定义及实现 1 多态的构成条件 2 虚函数 3 虚函数的重写 3 1多态条件探究 1 多态条件探究一 不符合重写 virtual函数 2 多态条件探究二 不符合重写 不是父类的指针或者引用调用
  • 内存管理 kmalloc

    section 0 preface 用户态的heap 是由glibc实现的 内核则自力更生的 所以内核的heap差别挺大的 从最直观的角度去看 在进行内核模块编写的时候 我们可以调用的heap相关函数 是kmalloc 以及kfree 那么
  • 立体电影

    立体电影 百科名片 1953年5月24日立体电影首次出现 为了把观众从电视夺回来 好莱坞推出了一种新玩艺儿 立体电影 戴着特殊眼镜的观众像在观看 布瓦那魔鬼 及 蜡屋 这类惊险片那样 发现自己躲在逃跑的火车及魔鬼的后面 从而为我们带入了立体
  • 微信小程序:用户基本信息的采集

    文章目录 写作背景 getUserInfo与getUserProfile open data 头像昵称填写能力 总结 写作背景 在开发商城小程序时需要显示用户头像 昵称 手机号等信息以便后续业务的实现 因此需要通过微信小程序的API采集用户
  • ​【机器学习】数据科学中 17 种相似性和相异性度量(上)

    本文解释了计算距离的各种方法 并展示了它们在我们日常生活中的实例 限于篇幅 便于阅读 将本文分为上下两篇 希望对你有所帮助 There is no Royal Road to Geometry 欧几里得 简介 相似性和相异性 在数据科学中
  • JFinal DB.tx()事务

    1 发现问题 1 功能实现逻辑 添加一个新的系统的时候 先添加系统本身 即名称 地址 简介 将这些存入system表 得到system id 添加系统所处的服务器 由于有专门的添加服务器功能 所以这里的服务器只用填地址 如果地址对应服务器不