当前位置: 首页 > news >正文

下模板做网站市场调研公司

下模板做网站,市场调研公司,桂林网页开发,海南房产文章目录 一、TenantLineHandler1、介绍2、包含的方法 二、简单实例三、实践1、实现TenantLineHandler接口 一、TenantLineHandler 1、介绍 TenantLineHandler 是 Mybatis-Plus 中用于处理多租户的接口,用于实现多租户数据隔离的具体逻辑。通过实现这个接口&#…

文章目录

  • 一、TenantLineHandler
    • 1、介绍
    • 2、包含的方法
  • 二、简单实例
  • 三、实践
    • 1、实现TenantLineHandler接口

一、TenantLineHandler

1、介绍

TenantLineHandler 是 Mybatis-Plus 中用于处理多租户的接口,用于实现多租户数据隔离的具体逻辑。通过实现这个接口,我们可以自定义多租户的处理方式,例如根据不同的租户信息动态拼装 SQL 条件,实现数据的隔离。

2、包含的方法

在 Mybatis-Plus 中,TenantLineHandler 接口包含了以下方法:

  • getTenantIdColumn():获取租户 ID 字段名。
  • getTenantId():获取当前租户 ID。
  • getTenantIdValue():获取租户 ID 的具体数值。
  • getTenantIdList():获取租户 ID 列表。
  • getTenantIdExpression():获取租户 ID 的 SQL 表达式。
    通过实现 TenantLineHandler 接口,并重写以上方法,我们可以根据具体的业务需求来自定义多租户的处理逻辑。例如,可以根据不同的租户 ID 动态拼装 SQL 条件,实现数据的隔离查询。

二、简单实例

面是一个简单示例,展示了如何自定义一个 TenantLineHandler 的实现类:

public class MyTenantLineHandler implements TenantLineHandler {@Overridepublic Expression getTenantId() {// 获取当前租户 IDLong tenantId = getCurrentTenantId();if (tenantId != null) {return new StringValue(String.valueOf(tenantId));} else {return null;}}@Overridepublic String getTenantIdColumn() {// 返回租户 ID 字段名return "tenant_id";}// 自定义方法,获取当前的租户 IDprivate Long getCurrentTenantId() {// 这里可以根据实际情况获取当前的租户 ID,可以从 ThreadLocal、token、session 等地方获取// 这里只是一个示例,实际中需要根据具体的业务逻辑进行实现return 1L;}
}

通过实现 TenantLineHandler 接口并重写其中的方法,我们可以灵活地处理多租户的逻辑,实现数据的隔离查询和操作。

三、实践

1、实现TenantLineHandler接口

import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.xxx.ContextHolder;
import com.xxx.TenantConfig;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;
import net.sf.jsqlparser.schema.Column;
import org.apache.commons.lang3.StringUtils;
import java.util.Objects;import java.util.List;
import java.util.Optional;public class MultiTenantHandler implements TenantLineHandler{private final Config config;public MultiTenantHandler(Config config) {this.config= config;}@Overridepublic Expression getTenantId() {String tenantId = Optional.ofNullable(ContextHolder.getTenantId()).orElse("1");return new LongValue(tenantId);}@Overridepublic String getTenantIdColumn() {return tenantConfig.getTenantIdColumn();}@Overridepublic boolean ignoreTable(String tableName) {// 其他处理逻辑return TenantLineHandler.super.ignoreTable(tableName);}@Overridepublic boolean ignoreInsert(List<Column> columns, String tenantIdColumn) {return TenantLineHandler.super.ignoreInsert(columns, tenantIdColumn);}
}
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Configuration
@ConfigurationProperties(prefix = "tenant")
@Data
public class Config {/*** 是否开启多租户*/private Boolean enable = true;/*** 租户id字段名*/private String tenantIdColumn = "tenant_id";/*** 需要忽略的多租户的表,此配置优先filterTables,若此配置为空则启用filterTables*/private List<String> ignoreTables;/*** 忽略指定用户对租户的数据过滤*/private List<String> ignoreLoginNames;/*** 忽略某租户对数据的过滤*/private String ignoreTenantId;}
http://www.mmbaike.com/news/42869.html

相关文章:

  • 杭州网站建设怎么样360竞价推广
  • 寻找专业网站建设百度网盘搜索引擎入口在哪里
  • 怎么做网站的搜索栏推广团队在哪里找
  • 宛城区网站推广免费营销培训
  • 网站建设项目简介广告海外推广
  • 如何做彩票网站的源码谷歌浏览器2021最新版
  • 云南建设厅网站资质证书查询网络营销的五大优势
  • 本地linux做网站韶山百度seo
  • 龙海网站定制经典软文案例标题加内容
  • 制作简易网站武汉最新今天的消息
  • 海洋网络做网站不负责网站搭建平台都有哪些
  • 网站的开发工具有哪些上海seo培训中心
  • wordpress培训类网站厦门人才网唯一官网招聘
  • 女士春深圳 网站制作谷歌浏览器chrome官网
  • 社保网站哪里做转入seo怎么做最佳
  • 南通网站建设上海比较大的优化公司
  • 在手机上怎么做微电影网站吗网站前期推广
  • 深圳网站建设fantodoseo点击排名源码
  • 网站设计需求分析淄博seo
  • 泉州外贸网站建设都有哪些公司2022年最火的电商平台
  • 网站定制的公司哪家好阿里大数据平台
  • 上海网站备案在哪里搜索引擎优化内容包括哪些方面
  • 重庆免费建网站宁波关键词优化时间
  • 东莞建设网站平台友情链接方面
  • 个人网站用备案吗有创意的营销策划案例
  • 北京朝阳区最好的小区产品seo怎么优化
  • 网站注销流程seo网络搜索引擎优化
  • 做同城网站赚钱迅雷下载磁力天堂
  • 南开网站建设公司台州网站建设平台
  • wordpress手动装插件提升神马seo关键词自然排名