Day04 部门管理
0、Spring Cache
我们查询部门数据的时候,特别是树形结构,要把所有的属性结构数据都展示出来,这个是会对数据库的访问造成一定的压力,并且从数据库查询效率也不是很高,所以我们通常都会添加缓存来提升效率。
添加缓存的基本逻辑:
项目集成步骤:
-
引导类上加
@EnableCaching
用于开启缓存。
-
引入redis包,在配置文件配置Redis。
-
在需要修改部门数据的方法添加@CacheEvict。
@CacheEvict注解
作用: 清理指定缓存
value: 缓存的名称,每个缓存名称下面可以有多个key
key: 缓存的key ----------> 支持Spring的表达式语言SPEL语法
3. 在需要获取部门数据的方法添加@Cacheable。
@Cacheable
作用: 在方法执行前,spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中
4. 这样每次读取部门数据都会先去缓存找,如果缓存没有再去数据库找,并存入缓存,避免了频繁读取数据库数据。同时,每次修改部门数据框架都会自动清除缓存数据。
1、部门列表
需要有上下级的关系,按照父部门编号查询子部门列表。
获取部门列表总体思路
业务层实现类的获取列表方法思路
获取部门列表SQL
2、部门树形结构
- 在新增或是后边的岗位查询都需要展示部门的属性结构,查询没有条件,把所有数据组装成树形结构。
部门树形结构总体思路
构建树形结构方法逻辑
recursionTreeItem方法逻辑
3、新增部门
Note:
1、由于该方法需要同时涉及部门表和用户表的修改,需要用@Transactional管理事务,确保方法执行过程中发生异常,所有数据库操作将回滚。
2、@CacheEvict:清除缓存。
DeptCacheConstant.LIST 和 DeptCacheConstant.TREE 是与部门数据相关的缓存。创建新部门后,这些缓存可能需要失效,以确保后续查询获取到最新数据。
。
部门新增方法逻辑
创建新部门编号业务逻辑
4、修改部门
修改部门业务逻辑
5、启用禁用部门
启用禁用部门业务逻辑
6、删除部门
删除部门业务逻辑
本人水平有限,有错的地方还请批评指正。
什么是精神内耗?
简单地说,就是心理戏太多,自己消耗自己。
所谓:
言未出,结局已演千百遍;
身未动,心中已过万重山;
行未果,假想灾难愁不展;
事已闭,过往仍在脑中演。