技术特征:
1.一种基于注解的数据权限控制方法,其特征在于,包括以下步骤:当某个持久层方法被执行时,注解解析器会先解析该方法的方法签名,分析出具体执行的种类;在获取到方法签名后,注解解析器会提取方法上的注解信息;sql处理器根据方法签名获取该方法对应的原始sql语句以及注解解析器的解析结果;sql处理器将对注解参数进行计算,获取数据权限注解的字段名参数,作为sql条件中运算符左边部分,获取常量值或者动态参数作为运算符右边部分;在计算完所有条件表达式后,sql处理器会使用内层表达式参数,将各表达式关联起来,形成sql子句。2.如权利要求1所述的一种基于注解的数据权限控制方法,其特征在于,所述数据权限注解包含权限表达式,其参数包括字段名、常量值和动态参数。3.如权利要求1或2所述的一种基于注解的数据权限控制方法,其特征在于,所述注解解析器在提取方法上的注解信息时,首先检查是否存在数据权限组合注解;如果存在数据权限组合注解,则解析权限参数,获取数据权限注解子集;如果不存在数据权限组合注解,则解析数据权限注解,该注解内部包含真正的权限表达式。4.如权利要求3所述的一种基于注解的数据权限控制方法,其特征在于,所述注解解析器提取方法上的注解信息时,找到方法上的每个数据权限注解,并放到一个数组中,然后遍历该数组,对数组中的数据权限注解实例进行解析,获取参数信息,并将最终结果封装成对象返回。5.如权利要求1或2所述的一种基于注解的数据权限控制方法,其特征在于,还包括以下步骤:sql处理器在形成sql子句后,将子句与原始sql进行关联;如果原始sql中不存在条件子句,则在sql子句前拼接where关键字,然后拼接到原始sql。6.如权利要求5所述的一种基于注解的数据权限控制方法,其特征在于,如果原始sql中存在条件子句,则将外层表达式拼接至sql子句前,然后拼接到原始sql中。7.一种基于注解的数据权限控制系统,其特征在于,包括:一注解解析器;所述注解解析器用于对业务方法上的注解进行解析,并提取出注解上的配置参数,并将注解参数抽象成数据对象,解析的结果将会传递给sql处理器;以及一sql处理器;所述sql处理器用于获取原始sql、对注解解析器的解析结果进行计算,形成具备逻辑的sql子句,最后将原始sql与sql子句进行拼接,形成具备数据权限的sql。8.如权利要求7所述的一种基于注解的数据权限控制系统,其特征在于,所述注解解析器用于对组合注解的数据权限进行解析,发现其内部包含了两个数据权限注解,第一个数据权限注解中字段名是role_id;第二个数据权限注解中字段名是user_id;注解解析器根据上述信息,将注解转换成最终的sql子句。
技术总结
本发明公开了一种基于注解的数据权限控制方法,包括以下步骤:当某个持久层方法被执行时,注解解析器会先解析该方法的方法签名,分析出具体执行的种类;在获取到方法签名后,注解解析器会提取方法上的注解信息;SQL处理器根据方法签名获取该方法对应的原始SQL语句以及注解解析器的解析结果。本发明通过注解参数动态编译SQL,不需要调整原来的业务代码和SQL语句,只需在相关的业务方法上添加注解即可,并且可自行控制起开或者关闭;由于注解是方法级的,当一个SQL已经被使用在多个方法中,当一个方法被添加上注解,也不会影响该SQL在其他方法中的正常使用,极大提高了灵活性。极大提高了灵活性。极大提高了灵活性。
技术研发人员:钟君凯 王东旭 王雯 王宁 罗康建 周志凯
受保护的技术使用者:杭州数政科技有限公司
技术研发日:2022.12.09
技术公布日:2023/3/14