狂刷项目
001 瑞吉外卖
- 2023年6月23日 day3配置CategoryController时候,导入资料中的实体类会莫名其妙报错,查看控制到得知, 有一个is_deleted的属性在数据表中不存在,而按照视频的进度来说,应该先注释掉这个属性
- 2023年6月24日 还是CategoryController,到删除阶段,一个很经典的问题,导入的资料包中的前端删除按钮传递的删除id是ids,而视频中这个阶段用的是id
同时需要将代码中Long id改为Long ids 下面也是
@DeleteMapping
public R<String> delete(Long ids) {
log.info("删除分类 id为 {}", ids);
categoryService.removeById(ids);
//categoryService.remove(id);
return R.success("删除成功!");
}
service中
void remove(Long id);
实现类
/**
* 根据id删除 删除前判断是否管理其他菜品或套餐
*
* @param id
*/
@Override
public void remove(Long id) {
// 查询当前分类是否关联菜品 如果有 抛出异常
LambdaQueryWrapper<Dish> dishLambdaQueryWrapper = new LambdaQueryWrapper<>();
// 添加查询条件 根据分类的id 进行查询
dishLambdaQueryWrapper.eq(Dish::getCategoryId, id);
int count1 = dishService.count(dishLambdaQueryWrapper);
if (count1 > 0) {
//关联菜品 抛出异常
throw new CustomException("关联了菜品,不能删除");
}
// 查询当前分类是否关联套餐 如果有 抛出异常
LambdaQueryWrapper<Setmeal> setmealLambdaQueryWrapper = new LambdaQueryWrapper<>();
// 添加查询条件 根据分类的id 进行查询
setmealLambdaQueryWrapper.eq(Setmeal::getCategoryId, id);
int count2 = setmealService.count(setmealLambdaQueryWrapper);
if (count2 > 0) {
//关联套餐 抛出异常
throw new CustomException("关联套餐,不能删除");
}
// 没有关联则正常删除
super.removeById(id);
}
002 三更Blog
- maven依赖管理器
加入最开始你没有某个依赖,你在父类中复制粘贴了依赖,并且加了dependencyManagement,如果本地仓库不存在该依赖,这个依赖会被过滤掉,只有手动的先取消dependencyManagement后,刷新maven导入依赖,然后再加上dependencyManagement才能正常管理依赖- 最上面的父类dependencyManagement
2023年7月25日
- BeanCopyUtils抄错
// 错误代码
public class BeanCopyUtils {
public BeanCopyUtils() {
}
//通过字节码反射的方式创建目标对象
public static <V> V copyBean(Object source, Class<V> clazz) {
// 创建目标对象 通过反射
V result = null;
try {
result = clazz.newInstance();
// 实现属性的拷贝
BeanUtils.copyProperties(source, result);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
// 补充拷贝的遍历等操作
// 传进来字节码
public static <O, V> List<V> copyBeanList(List<O> list, Class<V> clazz) {
return list.stream()
.map(o -> copyBean(0, clazz))
.collect(Collectors.toList());
}
}
错误原因0 写的时候以为从 0 开始 然后就错了 从serviceImpl一点点找上来的
2023年7月27日 03点58分
- 我是真真真服了...
Q:问题: 明明成功登录 但是死活访问不了指定页面 甚至token不知道发生了什么,登录了跟没登陆一样,甚至不如没登陆
R:倒腾了将近一小时,结果还是老毛病,写错内容了!!!!
A:在登录阶段设置存入redis的token内容时, 格式为
设置的挺好的,但是在jwt中拿来用的时候格式写成了//后面忘了写冒号... // 这里是将指定信息按照指定格式存入redis, 存储为loginUser redisCache.setCacheObject("bloglogin:" + userId, loginUser);
有一说一 我没捋清楚security的流程,总感觉是在处理token时候哪里有问题,毕竟登录上来,前端正常跳转,但是到业务部分就提示未登录,想了一会,本打算看看程序流, 翻了一下发现是redis取值这里有问题...花了半个多小时,满费劲的...redisCache.getCacheObject("bloglogin" + userId);
呆问题2023年7月30日10点41分
加了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
结果变成了!
实际上还要在启动类中添加
@EnableConfigurationProperties
2023年8月1日
浏览量使用redis定时持久化
原因: 在每次写入数据库会有行锁, 来回访问可能不会及时更新, 所以用redis记录浏览量并定时写入数据库中, 因为这个数据不那么重要,所以不考虑redis宕机的情况