首页 > 其他分享 >LLM-通义千问:MyBatis-Plus 多租户插件

LLM-通义千问:MyBatis-Plus 多租户插件

时间:2024-05-16 15:21:45浏览次数:12  
标签:插件 租户 Plus LLM MyBatis new public

MyBatis-Plus(简称MP)是一个对MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。多租户(Multi-Tenant)是一种软件架构技术,它允许多个组织(即“租户”)共享同一应用程序的实例,但每个组织的数据都是隔离且私有的。在多租户场景下,MyBatis-Plus提供了一种插件机制来支持多租户数据隔离,主要是通过在执行SQL时自动添加租户ID作为查询条件来实现。

MyBatis-Plus多租户插件使用方法

  1. 启用多租户插件

    首先,你需要在你的配置类中启用多租户插件。这通常涉及以下步骤:

    import com.baomidou.mybatisplus.extension.plugins.TenantLineHandler;
    import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
    import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
    
    // ...
    
    @Configuration
    public class MybatisPlusConfig {
    
        @Autowired
        private DataSource dataSource;
    
        @Bean
        public MybatisSqlSessionFactoryBean sqlSessionFactory() throws Exception {
            MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
            factory.setDataSource(dataSource);
            // 其他配置...
    
            // 添加多租户插件
            TenantLineInnerInterceptor tenantInterceptor = new TenantLineInnerInterceptor(new TenantLineHandler() {
                @Override
                public Expression getTenantId() {
                    // 根据实际情况获取当前租户ID,例如从ThreadLocal中获取
                    return new StringValue("your_tenant_id");
                }
    
                @Override
                public boolean ignoreTable(String tableName) {
                    // 判断是否忽略多租户过滤的表,例如一些公共表不需要加租户ID过滤
                    return Arrays.asList("public_table1", "public_table2").contains(tableName);
                }
            });
    
            List<InnerInterceptor> interceptors = new ArrayList<>();
            interceptors.add(tenantInterceptor);
            factory.setInterceptors(interceptors);
    
            return factory;
        }
    }
    

    上述代码展示了如何配置TenantLineInnerInterceptor插件,并通过匿名内部类实现了TenantLineHandler接口来定义租户ID的获取逻辑以及哪些表不需要进行多租户隔离。

  2. 在实体类上标记多租户字段

    为了明确哪个字段作为多租户的标识,你可以在实体类的相应字段上加上@TableField注解,并设置其exist属性为false来表明该字段不会映射到数据库表中,而是用于多租户查询条件。

    import com.baomidou.mybatisplus.annotation.TableField;
    
    public class YourEntity {
        // ...
        
        @TableField(exist = false)
        private String tenantId; // 假设tenantId是你的多租户字段
    
        // Getter and Setter
    }
    
  3. 注意事项

    • 确保你的查询逻辑中没有硬编码租户ID,让多租户插件自动处理。
    • 对于需要全局访问(不受租户限制)的表,需要在ignoreTable方法中将其列出。
    • 考虑到性能,多租户过滤最好在数据库层面实现,避免不必要的数据传输。

通过上述步骤,MyBatis-Plus的多租户插件就能帮助你在多租户场景下有效地管理数据隔离,提高系统的安全性与可维护性。

标签:插件,租户,Plus,LLM,MyBatis,new,public
From: https://www.cnblogs.com/Apear/p/18196003

相关文章

  • LLM-通义千问:掌握的Java知识过于零散,怎么系统地串一串
    要系统地整理和深化你的Java知识,可以遵循以下几个步骤和策略:1.回顾基础语言基础:从Java的基本语法开始,包括变量声明、数据类型、运算符、控制结构(if-else,for,while等)、数组和方法定义。面向对象编程:深入理解类与对象、继承、封装、多态这些核心概念,并实践如何设计良好的类......
  • vue3 elementplus样式
    科技感日期选择器样式.data_screen.el-picker-panel__footer{color:#87CEEB;background:#00122a;border-top:1pxsolid#274954;}.data_screen.el-picker-panel{color:#87CEEB;background:#00122a;border:1pxsolid#274954;}.data_screen.el-picker-pane......
  • 精通RAG架构:从0到1,基于LLM+RAG构建生产级企业知识库
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • apisix~authz-keycloak插件介绍
    参考:https://apisix.apache.org/docs/apisix/plugins/authz-keycloak/kc插件源码梳理及原理说明如果只是进行keycloak颁发的token进行校验(签名校验和有效期校验),那么我们可以使用jwt-auth这个插件实现,并且已经对这个插件进行二次开发,支持jwt内容解析与向下请求头的传递。作用......
  • MyBatis-Plus 实现多租户管理的实践
    本文主要讲解使用Mybatis-Plus结合dynamic-datasource来实现多租户管理在现代企业应用中,多租户(Multi-Tenant)架构已经成为一个非常重要的设计模式。多租户架构允许多个租户共享同一应用程序实例,但每个租户的数据彼此隔离。实现这一点可以大大提高资源利用率并降低运营成本。在本......
  • Mac电脑idea插件JRebel提示不可用
    现象:原因:常见如:https://jrebel.qekang.com/ 解决办法:降低IDEA>jrebel版本2022.4.1进入idea:打开Preferences-Plugins找到jrebel插件并卸载;到idea官方店下载:https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions/stable找到对应版本下载到本地后,打开......
  • mybatis及mybatis-plus的实体映射
    packagecom.duxiang.backgroundmanagement.entity;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;1.mybatisimportjavax.persistence.*;@Data@AllArgsConstructor@NoArgsConstructor@Table(name="m_chat")/......
  • SD安装animatediff插件
    在线地址https://gitcode.net/ranting8323/sd-webui-animatediff在线安装安装完重启下载animatediff专用模型和8个镜头(可选)https://huggingface.co/guoyww/animatediff/tree/main启用Animatediff公司电脑显卡不行,很多东西做不了。更多玩法可以去b站搜一下视频......
  • Mybatis-Plus中 updateById 无法将已有值的字段更新为 null
    在MyBatis-Plus中,使用updateById,null字段并不会更新,其实是和更新的策略有关,当然,也有插入策略。1、调整全局策略(会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null)mybatis-plus:global-config:db-config:insert-stra......
  • SD安装adetailer插件
    在线安装,这个地址是国内备份的,要比git快一点安装后重启下载模型,放到models\adetailer地址https://huggingface.co/Bingsu/adetailer/tree/main看情况,只修复人脸的话,就只下载face的然后画图的时候勾选Adetailer比如修复人脸detailface......