疯狂Activiti6连载(9)Activiti数据查询(二)

  本文节选自《疯狂工作流讲义(第2版)》

京东购买地址:https://item.jd.com/12246565.html

工作流Activiti6电子书http://blog.csdn.net/boxiong86/article/details/78488562

工作流Activiti6教学视频http://blog.csdn.net/boxiong86/article/details/78608585

Activiti数据查询

本章要点

    Activiti的数据查询、排序机制

排序方法

Query中提供了ascdesc方法,这两个方法可以设置查询结果的排序方式,但是调用这两个方法的前提是,必须告诉Query对象,是按何种条件进行排序,例如要按照ID排序,就要调用相应查询对象的orderByXXX方法。例如GroupQueryorderByGroupIdorderByGroupName等方法,如果不调用这些方法而直接使用asc或者desc方法,则会抛出ActivitiException,异常信息为:You should call any of the orderBy methods first before specifying a direction。要求Activiti进行排序,却不告诉它以哪个字段进行排序,因此会抛出该异常。代码清单6-7中调用ascdesc方法。

代码清单6-7codes\06\6.2\sort-data\src\org\crazyit\activiti\Sort.java

public static void main(String[] args) {

//创建流程引擎

ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();

//得到身份服务组件实例

IdentityService identityService = engine.getIdentityService();

//写入5条用户组数据

createGroup(identityService, UUID.randomUUID().toString(), "1", "typeA");

createGroup(identityService, UUID.randomUUID().toString(), "2", "typeB");

createGroup(identityService, UUID.randomUUID().toString(), "3", "typeC");

createGroup(identityService, UUID.randomUUID().toString(), "4", "typeD");

createGroup(identityService, UUID.randomUUID().toString(), "5", "typeE");

//调用orderByGroupIdasc方法,结果为按照ID升序排序

System.out.println("asc排序结果:");

List<Group> datas = identityService.createGroupQuery().orderByGroupName().asc().list();

for (Group data : datas) {

System.out.println("    " + data.getId() + "---" + data.getName());

}

System.out.println("desc排序结果");

//调用orderByGroupNamedesc方法,结果为名称降序排序

datas = identityService.createGroupQuery().orderByGroupName().desc().list();

for (Group data : datas) {

System.out.println("    " + data.getId() + "---" + data.getName());

}

}

//将用户组数据保存到数据库中

static void createGroup(IdentityService identityService, String id,

String name, String type) {

//调用newGroup方法创建Group实例

Group group = identityService.newGroup(id);

group.setName(name);

group.setType(type);

identityService.saveGroup(group);

}

代码清单6-7中,调用了ascdesc方法(代码清单中的粗体部分),输出的结果如下:

asc排序结果:

    35987ec6-de7f-4d36-920f-71d27b586817---1

    3273d754-a77f-4a7b-ac88-b529cc5e3d35---2

    590f5597-d662-4c35-a35c-c2828468878d---3

    f8decda9-ceb9-4172-ad61-ae3d2a8a4e8e---4

    0f50f928-a7ff-4b77-b4fd-578773c0fb2f---5

desc排序结果

    0f50f928-a7ff-4b77-b4fd-578773c0fb2f---5

    f8decda9-ceb9-4172-ad61-ae3d2a8a4e8e---4

    590f5597-d662-4c35-a35c-c2828468878d---3

    3273d754-a77f-4a7b-ac88-b529cc5e3d35---2

    35987ec6-de7f-4d36-920f-71d27b586817---1

注意:调用asc或者desc,只是让Query设置排序方式,orderByXXX方法、asc方法desc方法均返回Query本身,如果需要得到最终结果集,还需要调用list或者listPage方法。

ID排序问题

Activiti的设计中,每个数据表的主键均设计为字符型,这样的设计使得Activiti各个数据表的主键可以灵活设置,但是如果使用数字字符串作为其主键,那么按照ID排序,就会带来排序问题,请看代码清单6-8

代码清单6-8codes\06\6.2\sort-data\src\org\crazyit\activiti\SortProblem.java

public static void main(String[] args) {

//创建流程引擎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨大仙的程序空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值