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

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

作者: 在路上phper | 来源:发表于2018-02-06 10:55 被阅读27次

    首先看如下一张表


    image.png

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


    image.png
    image.png
    我们要完成转账功能 就需要用到事物 否则可能会出现转账失败的情况
    image.png

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


    image.png
    运行MyDB
    image.png
    目录中出现如下
    image.png
    接下来在MyDB中写转账代码
    image.png
    在main函数中调用
    image.png

    运行结果


    image.png
    数据库中数据
    image.png
    以上方法为取出某一个字段的具体值 那么我想要取出一条采用面向对象方式对其进行访问 比如实体类 这个要怎样做呢
    接下来演示下
    首先看自动生成代码的这张图
    image.png
    我们操作数据库时候用的是操作映射类 实体类存在tables下面的records下面
    所以我们首先要得到实体对象
    下面写下代码
    image.png
    运行结果
    image.png
    同样是5
    下面写下转账的事务处理代码
    image.png
    运行结果
    image.png
    再看下数据库中的表
    image.png
    可以看见完成了转账的过程
    那这时我们再次运行一下会有什么效果呢?
    image.png
    再次运行可以发现抛出了一个异常 因为余额不足了 转账肯定是不能成功的
    看下数据库中表
    image.png

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


    image.png
    将调用转账函数的参数做下修改 使接收转账的人在数据库中不存在 看下会出现什么效果
    image.png
    abc这个人在数据库中不存在
    运行结果
    image.png
    可以发现转账成功了
    然后看下数据库
    image.png
    可以发现钱转出去了 但是却不知道转给谁了
    下面为了解决我们修改下代码
    image.png
    运行结果
    image.png
    可以发现抛出了异常 因为abc不存在数据库当中
    再看下数据库中数据是否发生了改变
    image.png
    可以发现并没有转账
    只有数据库中有接收转账用户如下
    image.png
    再次运行
    image.png
    数据库
    image.png
    bhc用户转账给了wulong
    以上就是我们事务处理的简单过程
    image.png

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/pkwwzxtx.html