iso file download
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211335525.1 (22)申请日 2022.10.28 (71)申请人 天翼电子商务有限公司 地址 100037 北京市西城区阜成门外大街 31号4层429D (72)发明人 张少轩  (51)Int.Cl. G06F 21/62(2013.01) G06F 16/242(2019.01) (54)发明名称 自动追加共享数据库的SAAS系统中租户ID 的方法 (57)摘要 本发明公开了一种自动追加共享数据库的 SAAS系统中租户ID的方法, 它涉及软件开发技术 领域。 请求开始, 判断请求头中是否有租户信息 TENANT_ID: 没有, 则结束操作; 有, 则从请求头中 获取TENANT_ID后, 将租户ID绑定在Threa dLocal 对象中; 自定义拦截器拦截SQL执行, 判断是否有 注解@NoSetTenantID: 有, 则跳 过拦截, 执行原始 sql; 没有, 则解析MappedStatement对象, 追加 sql中的tenant_id字段; 从ThreadLocal中获取 TENANT_ID的值作为sql参数; 包装新的 MappedStatement对象, 赋值给invocation的 args数组的第0个元素。 本发明简化SQL编写, 提 高开发效率, 减少出错率, 保证 租户数据安全, 应 用前景广阔。 权利要求书1页 说明书3页 附图1页 CN 115544575 A 2022.12.30 CN 115544575 A 1.自动追加共享数据库的SA AS系统中租户ID的方法, 其特 征在于, 其 步骤为: (1)请求开始, 判断请求头中是否有租户信息TENANT_ID; (2)如果请求头中没有TENANT_ID, 结束操作; 如 果有, 从请求头中获取TENANT_ID后, 将 租户ID绑定在ThreadL ocal对象中; (3)自定义 拦截器拦截SQ L执行; (4)判断是否有注解@NoS etTenantID: 如 果有, 则跳过拦截, 执行原始 sql后, 结束操作; 如果没有, 则解析Map pedStatement对象, 追加sql中的tenant_id字段; (5)从ThreadL ocal中获取TENANT_ID的值, 作为sql 参数; (6)包装新的MappedStatement对象, 赋值给invocation的args数组的第0个元素, 结束 操作。 2.根据权利要求1所述的自动追加共享数据库的SAAS系 统中租户ID的方法, 其特征在 于, 所述的步骤(4)通过反射获取对应的接口方法判断是否有注解@N oSetTenantID。 3.根据权利要求1所述的自动追加共享数据库的SAAS系 统中租户ID的方法, 其特征在 于, 所述的步骤(4)如果没有注解@NoSetTenantID, 解析MappedStatement对象中的 BoundSql中的原 始sql, 在后面追加租户ID字段tenant_id。 4.根据权利要求1所述的自动追加共享数据库的SAAS系 统中租户ID的方法, 其特征在 于, 所述的步骤(5)从步骤(2)中ThreadLocal中获取与 当前线程绑定的租户ID作为参数设 置在其中。 5.根据权利要求1所述的一种自动追加共享数据库的SAAS系统中租户ID的方法, 其特 征在于, 所述的步骤(6)创建新的MappedStatement对象, 将新的BoundSql对象和其他旧的 MappedStatement属性填充在新的MappedStatement对象中, 并将其赋值给invocation的 args数组的第0个元 素。权 利 要 求 书 1/1 页 2 CN 115544575 A 2自动追加共享数据库的SA AS系统中租户ID的方 法 技术领域 [0001]本发明涉及的是软件开发技术领域, 具体涉及一种利用mybatis拦截器自动追加 共享数据库的SA AS系统中租户ID的方法。 背景技术 [0002]SAAS系统中非常重要的内容就是数据隔离, 从隔离性上讲有三种常见方案: 独立 数据库、 共享库独立schema、 共享数据库共享schema, 其隔离效果依次降低, 数据共享程度 依次升高; 在共享数据库共享schema这种隔离方式下, 由于每张表的设计都需要有一个租 户ID, 在大量SQL中如果每次都手工添加租户ID, 明显会影 响开发效率, 且容易出错, 导致数 据不安全。 具体地, 有以下问题: [0003](1)在几十上百个租户的SAAS系统中, 由于每一张表都带有租户ID, 因此DML操作 几乎都需要带 上租户ID这 一字段, 操作繁杂, 开发效率低下; [0004](2)小型的SAAS系统中由于共享了数据库, 每次操作时 的租户ID 一定要正确, 否则 就会发生数据污染, 一定程度增 加出错率, 租户数据安全性较低。 [0005]为了解决上述问题, 开发一种利用mybatis拦截器自动追加共享数据库的SAAS系 统中租户ID的方法尤为必要。 发明内容 [0006]针对现有技术上存在的不足, 本 发明目的是在于提供自动追加共享数据库的SAAS 系统中租户ID的方法, 简化SQL编写, 提高开发效率, 确保数据隔离性, 减少出错率, 保证租 户数据安全, 易于推广使用。 [0007]为了实现上述目的, 本发明是通过如下的技术方案来实现: 自动追加共享数据库 的SAAS系统中租户ID的方法, 其 步骤为: [0008](1)请求开始, 判断请求头中是否有租户信息TENANT_ID; [0009](2)如果请求头中没有TENANT_ID, 结束操作; 如果有, 从请求头中获取TENANT_ID 后, 将租户ID绑定在ThreadL ocal对象中; [0010](3)自定义 拦截器拦截SQ L执行; [0011](4)判断是否有注解@NoSetTenantID: 如果有, 则跳过拦截, 执行原始sql后, 结束 操作; 如果没有, 则解析Map pedStatement对象, 追加sql中的tenant_id字段; [0012](5)从ThreadL ocal中获取TENANT_ID的值, 作为sql 参数; [0013](6)包装新的MappedStatement对象, 赋值给invocation的args数组的第0个元素, 结束操作。 [0014]作为优选, 所述的步骤(4)通过反射获取对应的接口方法判断是否有注解@ NoSetTen antID, 如果没有注解@NoSetTen antID, 解析Mapp edStatement对象中的BoundSql 中的原始sql, 在后面追加租户ID字段tenant_id。 [0015]作为优选, 所述的步骤(5)从步骤(2)中ThreadLocal中获取与当前线程绑定的租说 明 书 1/3 页 3 CN 115544575 A 3

.PDF文档 专利 自动追加共享数据库的SAAS系统中租户ID的方法

文档预览
中文文档 6 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共6页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 自动追加共享数据库的SAAS系统中租户ID的方法 第 1 页 专利 自动追加共享数据库的SAAS系统中租户ID的方法 第 2 页 专利 自动追加共享数据库的SAAS系统中租户ID的方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 02:16:01上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。