现在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);