RuoYI
Start
- 注意前后端是否分离,启动后端项目只需要配置mysql数据库即可
- 注意node版本,不能过高或者过低

分页插件pagehelper中的startpage需要紧挨着mybatis查询方法,且只对一条有效

导出操作:在实体类上添加@excel注解,利用mybatis查询出相应数据,最后利用封装好的导出方法


导入操作:在实体类上添加@excel注解,利用封装好的工具类读取文件字节流,最后将读取到的数据写入数据库;

导入模板:利用相应实体类生成;

spring默认的事务处理规则是遇到运行时异常或者error才会进行回滚,检查时异常不会进行回滚操作(事务这一部分的细节没怎么看懂)

全局异常处理:@ControllerAdvice,切面概念;业务层不再需要去捕获异常,而是直接抛异常,所有异常都会在一个地方进行统一处理

权限控制:@PreAuthorize注解

本质:通过向hasPermi函数传递字符串进行相应逻辑判断,最后返回Boolean值
a. 将当前登录用户的所有菜单权限查询出来(sys_menu表中的perms字段)
b. 将接口传递的字符串参数与上述查询的菜单权限列表进行比对,看是否包含于该列表中
角色是权限的集合,此处的权限字符表示角色控制;此处的菜单权限才是重中之重!(每一个菜单在sys_menu表中对应一条记录,每一条记录中的perms字段即是用于@PreAuthorize注解校验)


所以也就是说,前端在创建新的菜单时,其实这个权限字符是必须的,且最好与后端接口约定好,但这也是前后端沟通的麻烦之处!

@Log注解
自定义注解的本质还是AOP:定义注解、使用注解、发现注解
切面如何获取到该注解位置???
多线程异步任务
本质:AsyncFactory类负责构建TimerTask任务,然后交由AsyncManager类通过线程池进行执行
https://www.cnblogs.com/ReturnOfTheKing/p/17989174
代码生成
本质是模板的渲染,相关模板路径为
BDCloud-generator/src/main/resources/vm/java/controller.java.vm
定时任务

注:
1、调用方法表达式:bean名称+方法名

2、任务的状态控制:
调度器内部的resumJob、pauseJob方法实现
字典管理
将一些枚举值放入字典中,便于动态管理
sys_dict_type和sys_dict_data通过字典标签dict_type进行关联

浙公网安备 33010602011771号