使用JOOQ事物完成简单转账过程,更新数据,实体类转化

首先看如下一张表


使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第1张图片
image.png

接下来我们创建一张表users_coin 用户虚拟币表 表的引擎必须为innerDB格式


使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第2张图片
image.png

使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第3张图片
image.png

我们要完成转账功能 就需要用到事物 否则可能会出现转账失败的情况
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第4张图片
image.png

接下来我们通过文档 用代码演示下
在MyDB中
可以使用lamda表达式插入参数 还可以插入接口的具体实现(匿名内部类的方式)
需要重写run方法 就可以实现基本的事物
接下来对业务逻辑进行编写
首先用JOOQ的自动生成代码 将users_coin表 生成一个类 接下来才能用面向对象方式操作数据库


image.png

运行MyDB
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第5张图片
image.png

目录中出现如下
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第6张图片
image.png

接下来在MyDB中写转账代码
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第7张图片
image.png

在main函数中调用
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第8张图片
image.png

运行结果


使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第9张图片
image.png

数据库中数据
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第10张图片
image.png

以上方法为取出某一个字段的具体值 那么我想要取出一条采用面向对象方式对其进行访问 比如实体类 这个要怎样做呢
接下来演示下
首先看自动生成代码的这张图
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第11张图片
image.png

我们操作数据库时候用的是操作映射类 实体类存在tables下面的records下面
所以我们首先要得到实体对象
下面写下代码
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第12张图片
image.png

运行结果
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第13张图片
image.png

同样是5
下面写下转账的事务处理代码
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第14张图片
image.png

运行结果
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第15张图片
image.png

再看下数据库中的表
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第16张图片
image.png

可以看见完成了转账的过程
那这时我们再次运行一下会有什么效果呢?
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第17张图片
image.png

再次运行可以发现抛出了一个异常 因为余额不足了 转账肯定是不能成功的
看下数据库中表
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第18张图片
image.png

发现没什么变化 因为钱不够了
接下来我们将数据库表恢复成原来的数据


使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第19张图片
image.png

将调用转账函数的参数做下修改 使接收转账的人在数据库中不存在 看下会出现什么效果
image.png

abc这个人在数据库中不存在
运行结果
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第20张图片
image.png

可以发现转账成功了
然后看下数据库
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第21张图片
image.png

可以发现钱转出去了 但是却不知道转给谁了
下面为了解决我们修改下代码
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第22张图片
image.png

运行结果
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第23张图片
image.png

可以发现抛出了异常 因为abc不存在数据库当中
再看下数据库中数据是否发生了改变
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第24张图片
image.png

可以发现并没有转账
只有数据库中有接收转账用户如下
image.png

再次运行
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第25张图片
image.png

数据库
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第26张图片
image.png

bhc用户转账给了wulong
以上就是我们事务处理的简单过程
使用JOOQ事物完成简单转账过程,更新数据,实体类转化_第27张图片
image.png

你可能感兴趣的:(使用JOOQ事物完成简单转账过程,更新数据,实体类转化)