这是一个mybatis的基于共享数据表模式的多租户插件
因为没人关注所以一直没上传.看到@kleen提交的pr还是非常的感谢(本人收到的第一个pr),所以决定把前段时间的成果稍加修改了下重新上传了, 当然因为系统中不允许更改数据租户 update语句并未去实现它
添加insert语句支持 现在支持用逗号隔开租户ID(多租户身份) 但不建议使用in语句可能会影响性能
改为使用h2数据库进行测试,更改配置类新增多种配置方式灵活配置,以及一些其他改动
修复update语句
<!--
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
-->
<plugins>
<!---->
<plugin interceptor="org.xue.MultiTenancy">
<!--数据库中租户ID的列名-->
<property name="tenantIdColumn" value="tenant_id"/>
<!--数据库方言-->
<property name="dialect" value="mysql"/>
<!--实现租户信息接口(TenantInfo)的实现类-->
<property name="tenantInfo" value="org.meara.mybatis.plugin.TenantInfoImpl"/>
<!--默认过滤还是忽略,true表示按租户过滤 默认值为false-->
<property name="filterDefault" value="true"/>
<!--table匹配正则表达式 逗号分隔-->
<property name="filterTableRegexStr" value=""/>
<!--statement匹配正则表达式(filterDefault为true,则这里为忽略UserMapper)-->
<property name="filterStatementRegexStr" value="^org\.meara\.mybatis\.plugin\.mapper\.UserMapper"/>
</plugin>
</plugins>
spring配置方式1(推荐)
<bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="plugins">
<array>
<bean class="org.meara.mybatis.plugin.MultiTenancy">
<constructor-arg>
<bean class="org.meara.mybatis.plugin.TenantInfoImpl">
<property name="multiTenancyFilter">
<bean class="org.meara.mybatis.plugin.filter.RegExMultiTenancyFilter">
<!--默认值-->
<property name="filterDefault" value="false"/>
<property name="filterStatementRegexArr">
<list>
<value>^com\.meara\.mapper\.FeePriceMapper</value>
</list>
</property>
<property name="filterTableRegexArr">
<list>
<value>fee_price</value>
<value>fee_item</value>
</list>
</property>
</bean>
</property>
</bean>
</constructor-arg>
<property name="properties">
<value>
tenantIdColumn=tenant_id
dialect=mysql
tenantInfo=org.meara.mybatis.plugin.TenantInfoImpl
</value>
</property>
</bean>
</array>
</property>
</bean>
spring配置方式2(简单筛选时可以使用此方式)
<bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="plugins">
<array>
<bean class="org.meara.mybatis.plugin.MultiTenancy">
<property name="properties">
<value>
tenantIdColumn=tenant_id
dialect=mysql
tenantInfo=org.meara.mybatis.plugin.TenantInfoImpl
filterDefault=false
filterStatementRegexStr=^com\.meara\.mapper\.FeePrice
filterTableRegexStr=fee_price,fee_item
</value>
</property>
</bean>
</array>
</property>
</bean>