美文网首页
flowable Query API中or or()的使用姿势

flowable Query API中or or()的使用姿势

作者: 一个忙来无聊的人 | 来源:发表于2021-04-15 09:37 被阅读0次

    实际开发过程中,由于业务原因导致可能需要or条件查询支持,例如在使用 HistoricProcessInstanceQuery、TaskInfoQuery等时,官方已经提供了OR条件。本文简单说明下or条件的基础用法

    TaskInfoQuery.png HistoricProcessInstanceQuery.png

    如上两个截图是官方源码展示的说明;具体在代码中使用 是按照 or() 声明 条件开始。 endOr()声明条件结束

          TaskQuery todoQuery = taskService.createTaskQuery()
                    .or() // or条件开始
                    .taskTenantIdLike(sendRequest.getTenantId()) // 此处由于个人业务原因,放了两个条件都是租户
                    .taskTenantId(RoleConstant.OLD_TENANT_ID)
                    .endOr() // or条件结束
                    .taskAssignee(sendRequest.getUserId()).active()
                    .includeProcessVariables().orderByTaskCreateTime().desc();
    //分页查询数据
    taskQuery.listPage(query.getCurrent(), query.getSize());
    
    

    以上代码执行分页查询的SQL语句为:

    SELECT
        RES.*, VAR.ID_ AS VAR_ID_,
        VAR.NAME_ AS VAR_NAME_,
        VAR.TYPE_ AS VAR_TYPE_,
        VAR.REV_ AS VAR_REV_,
        VAR.PROC_INST_ID_ AS VAR_PROC_INST_ID_,
        VAR.EXECUTION_ID_ AS VAR_EXECUTION_ID_,
        VAR.TASK_ID_ AS VAR_TASK_ID_,
        VAR.BYTEARRAY_ID_ AS VAR_BYTEARRAY_ID_,
        VAR.DOUBLE_ AS VAR_DOUBLE_,
        VAR.TEXT_ AS VAR_TEXT_,
        VAR.TEXT2_ AS VAR_TEXT2_,
        VAR.LONG_ AS VAR_LONG_
    FROM
        ACT_RU_TASK RES
    LEFT OUTER JOIN ACT_RU_VARIABLE VAR ON RES.PROC_INST_ID_ = VAR.EXECUTION_ID_
    WHERE
        RES.ASSIGNEE_ = ?
    AND RES.SUSPENSION_STATE_ = 1
    AND (
        RES.TENANT_ID_ = ?
        OR RES.TENANT_ID_ LIKE ?
    )
    ORDER BY
        RES.CREATE_TIME_ DESC
    

    可以看到 这个和我代码期望了 or条件是一样的。


    image.png

    如果觉得本文对大家有帮助,欢迎点个赞;如果文章中有错误的地方,欢迎大家批评指正;

    原创文章,转载注明出处,谢谢;

    相关文章

      网友评论

          本文标题:flowable Query API中or or()的使用姿势

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