首页 > 其他分享 >工作流新增实例

工作流新增实例

时间:2024-04-10 14:46:52浏览次数:29  
标签:语句 调用 插入 dbSqlSessionFactory 新增 entity 工作 实例 insertStatement

定义xml: org.activiti.db.mapping.entity.insertHistoricTaskInstance

调用:org.activiti.engine.impl.db;

类:DbSqlSession
方法:protected void flushRegularInsert(Entity entity, Class<? extends Entity> clazz) {
String insertStatement = this.dbSqlSessionFactory.getInsertStatement(entity);
insertStatement = this.dbSqlSessionFactory.mapStatement(insertStatement);
if (insertStatement == null) {
throw new ActivitiException("no insert statement for " + entity.getClass() + " in the ibatis mapping files");
} else {
log.debug("inserting: {}", entity);
this.sqlSession.insert(insertStatement, entity);
if (entity instanceof HasRevision) {
this.incrementRevision(entity);
}

}
}

解析如下:

1.首先,通过调用this.dbSqlSessionFactory.getInsertStatement(entity)获取实体类对应的插入语句。这个语句会在mybatis的映射文件中定义。

2.调用this.dbSqlSessionFactory.mapStatement(insertStatement)方法,将获取到的插入语句进行映射,得到具体的SQL语句。这个方法会根据mybatis的配置文件中定义的映射规则进行转换。

3.判断是否成功获取到了插入语句,如果插入语句为null,则抛出一个ActivitiException异常,表示找不到实体类的插入语句。

4.如果成功获取到了插入语句,则打印调试日志,表示当前正在执行插入操作。

5.调用this.sqlSession.insert(insertStatement, entity)方法,执行插入操作。使用mybatis的SqlSession对象,将插入语句和实体对象作为参数,执行数据库插入操作。

6.如果实体对象实现了HasRevision接口,则调用this.incrementRevision(entity)方法,增加实体对象的版本号。这个版本号可以用于乐观锁等并发控制的机制。

 

标签:语句,调用,插入,dbSqlSessionFactory,新增,entity,工作,实例,insertStatement
From: https://www.cnblogs.com/zqlmianshi/p/18125987

相关文章

  • 漏洞分类与实例解析:一场深入安全领域的探索之旅
    漏洞分类与实例解析:一场深入安全领域的探索之旅引言在网络安全的世界里,漏洞无处不在,犹如悬挂在信息空间之上的达摩克利斯之剑。正确识别并理解各类漏洞的特性和分类,是做好安全防护工作的基石。本文将深入探讨几种常见的漏洞类型——远程代码执行(RemoteCodeExecution,RC......
  • 创建网络名称空间后的Linux幕后工作解析
    Linux网络名称空间(NetworkNamespace)是一种强大的虚拟化技术......
  • MPT实例讲解
    前文回顾MPT原理以及应用案例分析图解数据注解结构注解Prefix说明符号含义......
  • Python的click库做命令行工作
    需求是MeterSphere测试计划状态是已完成/已结束,测试进度不是100%。排查发现是test_plan_test_case表中已取消关联的用例算在了测试用例总数导致的所以做了一个命令行工具方便其他人处理该问题pythonclick库常用函数详解_click函数-CSDN博客pythonClick库知识点汇总_python......
  • Blazor OIDC 单点登录授权实例7 - Blazor hybird app 端授权
    目录:OpenID与OAuth2基础知识BlazorwasmGoogle登录BlazorwasmGitee码云登录BlazorOIDC单点登录授权实例1-建立和配置IDS身份验证服务BlazorOIDC单点登录授权实例2-登录信息组件wasmBlazorOIDC单点登录授权实例3-服务端管理组件BlazorOIDC单点登录授权实......
  • 软工第二次任务-工作总结
    工作总结此次单元测试任务,最终顺利完成目标。但是在任务进行时,还是遇到了诸多困难,首先就是并未了解过自动化测试,对于如何编写测试框架时一窍不通。但是经过不断的摸索,还是顺利的进行了第一个代码测试,测试"HelloWord!",当然这个我认为也是进行了语句覆盖,而且代码简单到不需要自动......
  • [20240409]为什么一条sql语句在实例2执行要慢的分析.txt
    [20240409]为什么一条sql语句在实例2执行要慢的分析.txt--//生产系统遇到一个奇怪现象,一条sql语句在实例2要比实例1慢很多,展开分析看看.1.环境:[email protected]:9014/ywdb>@ver1PORT_STRING                   VERSION       BANNER---------------......
  • 【Linux】编写并运行Shell脚本程序操作实例
    关于Shell脚本的介绍:Shell脚本是一种用于自动化任务和简化常见操作的脚本语言,通常用于Linux和Unix环境中。Shell脚本允许用户通过编写一系列命令和逻辑语句来执行一系列任务,从而提高了工作效率和自动化水平。以下是关于Shell脚本的详细介绍:1.基础概念:Shell本身是一个用C......
  • 浏览器工作原理与实践--渲染流水线:CSS如何影响首次加载时的白屏时间
    在上一篇文章中我们详细介绍了DOM的生成过程,并结合具体例子分析了JavaScript是如何阻塞DOM生成的。那本文我们就继续深入聊聊渲染流水线中的CSS。因为CSS是页面中非常重要的资源,它决定了页面最终显示出来的效果,并影响着用户对整个网站的第一体验。所以,搞清楚浏览器中的CSS是怎......
  • (亲测好用)使用PHP提取PDF内容的详细步骤与实例
    使用PHP提取PDF内容的详细步骤与实例在现代Web开发中,处理PDF文件的需求越来越普遍。无论是需要读取PDF文件的内容,还是需要进行PDF文件的编辑和转换,PHP都提供了丰富的库和函数来帮助我们完成这些任务。本文将详细介绍如何使用PHP来提取PDF文件的内容,并提供相关的代码示例。1.安装......