weed3-3.2.事务

作者: 草编椅 | 来源:发表于2019-10-11 18:36 被阅读0次

Weed3 一个超轻量级ORM框架(只有90kb不到哦)

源码:https://github.com/noear/weed3

之前讲了插入和更新
这次讲事务(写操作总会傍随事务嘛...)
  • weed3 支持两种方式的事务
  • 1.事务(主要用于单个库)
//demo1:: //事务组 // 在一个事务里,做4个插入//如果出错了,自动回滚
db.tran((t) => {
    //以下操作在同一个事务里执行
    t.db().sql("insert into test(txt) values(?)", "cc").tran(t).insert();
    t.db().sql("insert into test(txt) values(?)", "dd").tran(t).insert();
    t.db().sql("insert into test(txt) values(?)", "ee").tran(t).insert();

    t.db().sql("update test set txt='1' where id=1").tran(t).insert();
});
  • 2.事务队列(主要用于多个库的情况)
//demo2:: //事务队列
//
//假如,要跨两个数据库操作(一个事务对象没法用了)
//
DbContext db = DbConfig.pc_user;
DbContext db2 = DbConfig.pc_base;

//创建个事务队列(和传统概念的队列不一样)
DbTranQueue queue = new DbTranQueue();

//数据库1的事务
db.tran().join(queue).execute((t) => {
    db.sql("insert into test(txt) values(?)", "cc").tran(t).execute();
    db.sql("insert into test(txt) values(?)", "dd").tran(t).execute();
    db.sql("insert into test(txt) values(?)", "ee").tran(t).execute();
});

//数据库2的事务
db2.tran().join(queue).execute((t) => {
    db2.sql("insert into test(txt) values(?)", "gg").tran(t).execute();
});

//队列结组完成(即开始跑事务)
queue.complete();
  • 3.事务队列的加强版,跨函数或模块跑事务
public void test_main(){
    DbTranQueue queue = new DbTranQueue();
    test1(queue);
    test2(queue);
}

public void test1(DbTranQueue queue){
    DbTran tran = DbConfig.db1.tran();//生成个事务对象

    tran.join(queue).execute((t) -> {
            t.db().sql("insert into $.test(txt) values(?)", "cc").tran(t).insert();
            t.db().sql("insert into $.test(txt) values(?)", "dd").tran(t).execute();
            t.db().sql("insert into $.test(txt) values(?)", "ee").tran(t).execute();

            t.result = t.db().sql("select name from $.user_info where user_id=3").tran(t).getValue("");
        });
}

public void test2(DbTranQueue queue){
    //...test2就不写了
}
下一篇:4.1.查询之输出

相关文章

  • weed3-3.2.事务

    Weed3 一个超轻量级ORM框架(只有90kb不到哦) 源码:https://github.com/noear/...

  • java事务

    1、java事务介绍 2、JDBC事务 3、JTA事务 1、java事务介绍 java事务分类:JDBC事务、...

  • 事务、MySQL与Python交互、Python 中操作 MyS

    1、事务 事务操作分两种:自动事务(默认)、手动事务 手动事务的操作流程 开启事务:start transacti...

  • 数据库事务书目录

    数据库事务 事务概念 本地事务 全局事务 全局事务的定义 J2EE中全局事务的实现 全局事务的优缺点 基于消息的分...

  • MySQL事务

    MySQL-innodb-事务 事务的特性 事务的生命周期 失败的事务: 事务的控制语句 面试题 事务日志-red...

  • mysql事务隔离机制及其隔离级别、实现原理分析

    目录 事务特性ACID属性 并发事务带来的问题 事务隔离级别 事务实现原理 事务特性ACID属性 事务特性指的就是...

  • MULE事务配置

    在mule的事务可能为jdbc事务,jms事务,xa事务等,多种事务.这里讲解事务的几个动作: 相关的文档:htt...

  • 事务—事务模型

    程序猿基础知识的学习、理解、整理——事务(方方土) 事务,看似很简单,其实很复杂,作为一个程序猿,你对事务到底了解...

  • 事务—XA事务

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是XA事务?在什么场景下会出现XA事务? @Transac...

  • 事务—事务模式

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是事务模式?这里提到的事务模式,主要是指在系统设计过程中的...

网友评论

    本文标题:weed3-3.2.事务

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