activiti 灵活查询任务多个list对象任务,提高查询效率

现在boss让我实现的是分页查询多个人的任务。

遇到的问题总结如下:
就是现在要实现的是查询部门下所有人的任务,
前端说查询10条数据
集合中第一个人是张三
如果第一个人张三查询出10条信息,pagesize也是10,李四就查不出任务了,为了完美实现分页,代码如下

(一下子查询全部,如果数据量十分大,则效率很低)

1.注入ManagerService

 @Autowired
    private ManagementService managementService;

2.放入你要的tableName

 String tableName = managementService.getTableName(Task.class);
        System.out.println("Task对象对应的表名:"+tableName);

输出结果如下

Task对象对应的表名:ACT_RU_TASK

3.sql语句拼接

简单粗暴如下

String sql = "SELECT * FROM `act_ru_task` WHERE ASSIGNEE_='SP1D1' ";

4.运用

 //得到表名
        String tableName = managementService.getTableName(Task.class);
        //获得数据库表中各列名
        List<String> list = managementService.getTableMetaData(tableName).getColumnNames();
        String sql = "SELECT * FROM `act_ru_task` WHERE ASSIGNEE_='SP1D1' ";
        Object getTaskListBySql = taskService.createNativeTaskQuery().sql(sql);
        List<Task> taskMy = ((NativeTaskQueryImpl) getTaskListBySql).list();

5.优化上述sql

String sql = "SELECT * FROM "+tableName+" WHERE "+list.get(10)+" IN ('SP1D1')";
        Object getTaskListBySql = taskService.createNativeTaskQuery().sql(sql);
        List<Task> taskMy = ((NativeTaskQueryImpl) getTaskListBySql).listPage(page.getPage(),page.getSize());
        RestPageResult<TaskDto> taskDept = deptPostTask(roleId, deptCode, page);

6.其他

listpage方法和list 方法效果相似,唯一不同的就是listpage把查询结果分页了.
// 调用ListPage方法,从索引为3的记录开始,查询2条记录  
List<Group>datas = identityService.createGroupQuery().listPage(3, 2);


猜你喜欢

转载自blog.csdn.net/sicily_winner/article/details/79900725
今日推荐