(一)新增
实现思路:
- 直接调用MyBatis-Plus里面的save保存
- 返回执行成功信息
@PostMapping
public R<String> save(@RequestBody Category category){
categoryService.save(category);
return R.success("新增成功");
}
(二)分页查询
实现思路:
- MyBatisPlus分页查询拦截器在公共部分已经配置
- 根据当前页码和每页显示条数 对category表进行分页查询
- 调用service处理
- 创建wrapper对象 设置排序字段
- 响应处理结果
@GetMapping("/page")
public R<Page<Category>> page(@RequestParam(defaultValue="1") int page, @RequestParam(defaultValue="10") int pageSize){
Page<Category> categoryPage = new Page<>(page, pageSize);
LambdaQueryWrapper<Category> wrapper = new LambdaQueryWrapper<>();
wrapper.orderByAsc(Category::getSort);
categoryService.page(categoryPage,wrapper);
return R.success(categoryPage);
}
(三)修改
Controller层
实现思路:
- 调用service处理
- 响应处理结果
@PutMapping
public R<String> update(@RequestBody Category category){
categoryService.updateCategory(category);
return R.success("修改成功!");
}
service层
public interface CategoryService extends IService<Category> {
void updateCategory(Category category);
}
serviceImpl层
实现思路:
- 判断用户提交的分类修改数据中分类名称不能和其他分类名称重复
- 查询条件:name:分类名称 id:分类id
- 根据名称为name且id不等于当前这个分类id进行查询统计
- 执行修改操作
@Service
public class CategoryServiceImpl extends ServiceImpl<CategoryDao,Category> implements CategoryService {
@Autowired
private CategoryDao categoryDao;
@Override
public void updateCategory(Category category) {
LambdaQueryWrapper<Category> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Category::getName,category.getName());
wrapper.ne(Category::getId,category.getId()); //ne:不等于
Integer count = categoryDao.selectCount(wrapper);
if(count>0){
throw new CustomException(0,"当前分类名称已存在,请设置为其他的!");
}
categoryDao.updateById(category);
}
}
(四)删除
Controller层
实现思路:
- 调用service处理
- 响应处理结果
@DeleteMapping("/{id}")
public R<String> delete(@PathVariable Long id){
categoryService.deleteById(id);
return R.success("删除成功!");
}
service层
public interface CategoryService extends IService<Category> {
void deleteById(Long id);
}
serviceImpl层
实现思路:
- 判断id不为null
- 根据分类id查询菜品表dish进行统计 看当前分类下有没有菜品数据 有,则不能删除
- 根据分类id查询套餐表setmeal进行统计 看当前分类下有没有套餐数据 有,则不能删除
- 以上都通过了 该分类下没有菜品或套餐数据 则可以删除
@Service
public class CategoryServiceImpl extends ServiceImpl<CategoryDao,Category> implements CategoryService {
@Autowired
private CategoryDao categoryDao;
@Autowired
private DishDao dishDao;
@Autowired
private SetmealDao setmealDao;
/**
* 根据id删除分类
* @param id
*/
@Override
public void deleteById(Long id) {
if(id==null){
throw new CustomException(0,"分类删除id不能为空!");
}
LambdaQueryWrapper<Dish> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(Dish::getCategoryId,id);
Integer count = dishDao.selectCount(wrapper1);
if(count>0){
throw new CustomException(0,"当前分类下存在关联菜品,无法删除!");
}
LambdaQueryWrapper<Setmeal> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(Setmeal::getCategoryId,id);
Integer count1 = setmealDao.selectCount(wrapper2);
if(count1>0){
throw new CustomException(0,"当前分类下存在关联套餐,无法删除!");
}
System.out.println("count1 = " + count1);
categoryDao.deleteById(id);
}
}
(五)条件查询
思路:
- 根据类型type查询指定菜品分类或套餐分类数据
- 创建条件构造器
- 添加查询条件
- 执行查询方法
- 返回结果
@GetMapping("/list")
public R<List<Category>> list(Integer type){
LambdaQueryWrapper<Category> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(type!=null,Category::getType,type);
List<Category> list = categoryService.list(wrapper);
return R.success(list);
}
本文含有隐藏内容,请 开通VIP 后查看