优化@GetMapping("/form/list") public ReturnData listForms(QueryFormRequest.List request, @RequestAttribute Long createBy) { List<Form> formList = formService.list(Wrappers.<Form>lambdaQuery().eq(Form::getCreateBy, createBy) .eq(ObjectUtil.isNotNull(request.getStatus()), Form::getStatus, request.getStatus()) .orderByDesc(Form::getUpdateTime)); return ReturnData.success().data(formList); }
时间: 2024-02-18 22:59:10 浏览: 191
spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的解决方法
5星 · 资源好评率100%
这个接口的查询条件比较简单,只有根据当前用户和状态进行筛选,因此优化方案并不繁琐。
1. 对于查询条件中的 status 属性,我们可以使用 StringUtils.isNotBlank() 方法来进行判断,避免使用 ObjectUtil.isNotNull() 方法的多余判断。
2. 对于返回的表单列表,我们可以使用 PageHelper 进行分页。例如,我们可以增加一个 pageable 参数:
```java
@GetMapping("/form/list")
public ReturnData listForms(QueryFormRequest.List request, @RequestAttribute Long createBy, Pageable pageable) {
Page<Form> formPage = formService.page(new Page<>(pageable.getPageNumber() + 1, pageable.getPageSize()),
Wrappers.<Form>lambdaQuery().eq(Form::getCreateBy, createBy)
.eq(StringUtils.isNotBlank(request.getStatus()), Form::getStatus, request.getStatus())
.orderByDesc(Form::getUpdateTime));
return ReturnData.success().data(formPage);
}
```
这样,我们可以直接返回一个 Page 对象,其中包含了查询到的表单列表和分页信息。前端可以通过分页信息进行分页展示,而无需每次查询全部数据。
3. 如果数据量比较大,我们可以考虑使用缓存来优化查询速度。例如,我们可以使用 Redis 缓存来缓存查询结果,下次查询时可以先从缓存中获取结果,如果缓存中不存在,则进行数据库查询,并将查询结果缓存到 Redis 中,以便下次查询时直接从缓存中获取数据。
阅读全文