积木塔
数据层积木模块理论,关系型数据库通过JDBC数据库连接获取后,进行数据初步组装,如mapper层也就是数据持久层,对数据进行持久化和组装。以满足不同的业务场景。这里主要是数据查询,要有积木模块单位共用思维。
业务层积木理论,将业务进行积木模块化设计,提升共用性。例如泛型、以及工具类。
RBAC+资源池+数据权限概念
1 页面及接口资源分配:角色挂菜单,菜单(或按钮)挂接口标识。前端访问系统页面分配,直接给角色分配对应菜单或按钮,然后给用户分配对应角色即可;分配完页面后,还要给页面或按钮分配对应接口标识,才可以访问后端接口调取数据。如果一个页面包含很多按钮及数据初始化,可以在页面级别分配接口;当然颗粒度也可以更细点,到按钮级别。
2 数据权限资源分配:
查询数据时,一般会区分机构、角色、用户等维度。涉及关系型数据库表的时候,一定要考虑到,把这些字段设计上。举例,管理机构、总医院、分医院、部门/科室、医生或护士。
如果不设计上,可以用一个字段存储层级json串。Mysql支持使用json查询,但是使用json字段查询时,是全表查询,数据量大的时候查询慢,这时可以创建虚拟字段,虚拟字段不占空间,只有在查询时自动进行计算,并且虚拟字段可以创建所以,提升查询速度。
对JSON中dist_request_id属性创建虚拟列v_request_id,对应的SQL如下
ALTER TABLE document
Add COLUMN v_request_id
varchar(32)
GENERATED ALWAYS AS (json_unquote(json_extract(extra
,_utf8mb4'$.dist_request_id'))) VIRTUAL NULL;
SQL解读:
json_extract 代表从指定属性名称中提取对应的属性的值。
json_unquote 去掉JSON中的引号,转为字符串。
VIRTUAL 代表该列为虚拟列。
null 代表字段允许为空。