需求
在页面显示套餐的各个信息。
代码开发
前后端交互过程
- 页面发送ajax请求,将分页的数据发送到服务端,服务端接收数据进行分页查询。
- 页面发送请求,进行图片的下载用于页面的图片展示。
需要操作的表:setmeal表、category表。
映射实体类用setmealDto。
进行分页查询。
1、创建dto的分页page对象。
2、把setmea的page对象内容拷贝到dto的分页page对象中,注意:records属性不要拷贝,因为它们的泛型不同,所以需要单独处理。
3、取出dto的分页page对象中查到的records内封装的内容进行stream处理。
4、设置records属性内容。
5、把dto的分页page对象进行返回给前端。
注意:
对象的拷贝用到BeanUtils工具类。
控制层
/**
* 套餐分页查询
*
* @param page
* @param pageSize
* @param name
* @return
*/
@GetMapping("/page")
public R<Page> page(Integer page, Integer pageSize, String name) {
// 增加日志,验证是否接收到前端数据。然后进行分页查询。
log.info("page:{},pagesize:{},name:{}", page, pageSize, name);
// 构造分页条件构造器
Page<Setmeal> pageInfo = new Page<>(page, pageSize);
// 1、创建dto的分页page对象。
Page<SetmealDto> dtoPage = new Page<>();
// 构造条件构造器。
LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotEmpty(name), Setmeal::getName, name);
// 添加排序条件
queryWrapper.orderByDesc(Setmeal::getUpdateTime);
// 查询数据库
setmealService.page(pageInfo, queryWrapper);
// 把pageInfo对象中的内容拷贝到dtoPage中,records属性除外。
BeanUtils.copyProperties(pageInfo, dtoPage, "records");
// 2、把setmea的page对象内容拷贝到dto的分页page对象中,注意:records属性不要拷贝,
// 因为它们的泛型不同,所以需要单独处理。
List<Setmeal> records = pageInfo.getRecords();
// Stream处理,item为每一个查到的setmeal对象。
List<SetmealDto> list =
records.stream()
.map(
(item) -> {
// 创建dto
SetmealDto setmealDto = new SetmealDto();
// 对象拷贝。 设置records属性内容。
BeanUtils.copyProperties(item, setmealDto);
// 得到分类id
Long categoryId = item.getCategoryId();
// 根据id查询到分类对象。
Category category = categoryService.getById(categoryId);
// 得到分类名称
String categoryName = category.getName();
if (StringUtils.isNotEmpty(categoryName)) {
setmealDto.setCategoryName(categoryName);
}
return setmealDto;
})
.collect(Collectors.toList());
// 3、取出dto的分页page对象中查到的records内封装的内容进行stream处理。
// 5、把dto的分页page对象进行返回给前端。
// 设置records;
dtoPage.setRecords(list);
return R.success(dtoPage);
}
测试通过
总结:比较复杂的是显示套餐分类名称业务。需要得到分类名称,单独设置,单独处理records,期间还需要进行两次对象的拷贝。
- 祝你:吉时吉日喜如风,丰年丰月如风增,争富争财争长寿,寿山寿海寿长生,生富生才生贵子,子孝孙贤代代荣,荣华富贵年年有,有钱有势有前程!
- 祝你:吃不愁穿不愁,不住平方住高楼,天天潇洒,夜夜温柔,买卖如同长江水,生活如同井上花,大财小财天天进,一顺百顺发发发!
- 点点关注不迷路,感谢老铁的关注。