【工作流前进之路】Activiti数据查询排序

2024-03-15 06:08

本文主要是介绍【工作流前进之路】Activiti数据查询排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     学习过SQL的人都知道,在数据库中运用Asc和Desc方法来进行排序,在工作流中,亦还是运用这两个方法来进行排序,因为工作流最终的还是需要和数据库进行交互.


     在我的前一篇博客<<【工作流前进之路】Activiti权限之用户组-数据查询>>中曾介绍到过一个借口叫做query,Query中也提供了Asc和Desc方法设置查询结果的排序方式,使用这两个方法的前提是必须告诉Query 对象是按照何种条件进行排序的.比如说常用的按照ID升序,按照Name降序.为了好理解,看看下面的例子:

<span style="font-family:FangSong_GB2312;font-size:18px;">/*** 利用Asc和Desc进行排序* * @author huan* */
public class Sort {public static void main(String[] args) {// 创建流程引擎ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();// 得到身份服务组件实例IdentityService identityService = engine.getIdentityService();// 调用orderByGroupId和asc方法,结果按照ID升序排序System.out.println("asc 排序结果");List<Group> datas = identityService.createGroupQuery().orderByGroupId().<span style="color:#ff0000;"><strong>asc()</strong></span>.list();for(Group data:datas){System.out.println(data.getId() + "-----" + data.getName() +" ");}// 调用orderByGroupName 和desc 方法,结果按照Name降序排序System.out.println("desc 排序结果");datas = identityService.createGroupQuery().orderByGroupName().<span style="color:#ff0000;"><strong>desc()</strong></span>.list();for(Group data:datas){System.out.println(data.getId() + "-----" + data.getName() + " ");}}
}</span>
运行结果如下:

     对于排序的结果,很可能你会问,为什么会这种现象呢.产生这种现象的原因是由于ID_序列段数据类型是字符型,以我用的Mysql为例,如果字段类型Wie字符型,而实际存储的是数据的话,那么进行排序时,会将其看作字符型,因此会产生如下看似错乱的样子.


     在前面我们说了使用Asc或者Desc方法排序的时候,必须指明按照何种条件排序,如果为指明条件,就会抛出ActivitiException异常,异常信息如下:

Exception in thread "main" org.activiti.engine.ActivitiException: You should call any of the orderBy methods first before specifying a direction
at org.activiti.engine.impl.AbstractQuery.direction(AbstractQuery.java:86)
at org.activiti.engine.impl.AbstractQuery.asc(AbstractQuery.java:76)
at org.crazyit.activiti.Sort.main(Sort.java:25)

     

     在实际应用中,除了按照单个字段排序以外,还有可能需要按照多个字段进行排序,例如根据名称降序,根据ID升序.那么在调用Asc和Desc方法时就需要注意,Asc方法和Desc方法会更加Query实例中的orderproperty属性来决定排序的字段,然后调用Asc或Desc方法时,就会根据当前Query实例所持有的orderproperty属性来创建orderBy语句.具体实例如下:

<span style="font-family:FangSong_GB2312;font-size:18px;">/*** 多字段排序* @author huan**/
public class Sortmix {public static void main(String[] args) {//创建流程引擎ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();//得到身份服务组件实例IdentityService identityService = engine.getIdentityService();//先按照id降序,名称升序排序System.out.println("ID降序排序");<span style="color:#ff0000;"><strong>List<Group> datas = identityService.createGroupQuery().orderByGroupId().desc().orderByGroupName().asc().list();</strong></span>for(Group data : datas){System.out.println(data.getId() + "-----" + data.getName() +" ");}System.out.println("\n名称降序排序");datas = identityService.createGroupQuery().orderByGroupId().asc().orderByGroupName().desc().list();for(Group data : datas){System.out.println(data.getId() + "-----" + data.getName() +" ");}}
}
</span>

运行结果:



     对于工作流的排序,其实咱们并不陌生,在SQL中遇见过,在VB,VB.NET,C#,JAVA项目中遇见过,它可以说就是咱们的老相识了。多和以前的知识结合,你会发现以一切都很简单的。

这篇关于【工作流前进之路】Activiti数据查询排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811032

相关文章

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复