This commit is contained in:
2023-05-19 17:38:09 +08:00
parent e41797c750
commit 3dc6fb7828
77 changed files with 1000 additions and 256 deletions

View File

@ -22,7 +22,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
/**
* 全局跨域配置
* 多数据源配置
*
* @author ailanyin
* @version 1.0

View File

@ -11,6 +11,8 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* MybatisPlusConfig
*
* @author ailanyin
* @version 1.0
* @since 2023/5/8 11:18

View File

@ -1,11 +1,7 @@
package com.qiaoba.common.database.factories;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.qiaoba.common.database.config.DynamicDataSourceConfig;
import com.qiaoba.common.database.config.DynamicDataSourceContext;
import com.qiaoba.common.database.config.MybatisPlusConfig;
import com.qiaoba.common.database.filters.DynamicDataSourceFilter;
import com.qiaoba.common.database.properties.DefaultDataSourceProperties;
import org.springframework.context.annotation.Bean;

View File

@ -1,14 +1,18 @@
package com.qiaoba.common.database.filters;
import com.qiaoba.common.base.utils.TenantUtil;
import com.qiaoba.common.database.config.DynamicDataSourceContext;
import com.qiaoba.common.database.constants.DynamicDatasourceConstant;
import com.qiaoba.common.base.utils.TenantUtil;
import com.qiaoba.common.web.utils.ResponseUtil;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.annotation.Resource;
import javax.servlet.*;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -21,17 +25,18 @@ import java.io.IOException;
*/
@Component
@Order(-10000)
public class DynamicDataSourceFilter implements Filter {
public class DynamicDataSourceFilter extends OncePerRequestFilter {
@Resource
private DynamicDataSourceContext dynamicDataSourceContext;
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
//设置当前租户对应的数据库
dynamicDataSourceContext.setDataSource(DynamicDatasourceConstant.DEFAULT_MASTER_DATASOURCE_KEY);
// todo
TenantUtil.setTenantId("1");
filterChain.doFilter(servletRequest, servletResponse);
filterChain.doFilter(request, response);
dynamicDataSourceContext.clearDataSource();
TenantUtil.clearTenantId();
}

View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.*;
import com.baomidou.mybatisplus.core.toolkit.ReflectionKit;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.toolkit.Db;
import com.qiaoba.common.web.utils.BeanCopyUtil;
@ -101,7 +101,7 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
* 批量插入(包含限制条数)
*
* @param entityList list
* @param batchSize 最大调数
* @param batchSize 最大调数
* @return 结果
*/
default boolean insertBatch(Collection<T> entityList, int batchSize) {
@ -113,7 +113,7 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
* 批量更新(包含限制条数)
*
* @param entityList list
* @param batchSize 最大调数
* @param batchSize 最大调数
* @return 结果
*/
default boolean updateBatchById(Collection<T> entityList, int batchSize) {
@ -125,7 +125,7 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
* 批量插入或更新(包含限制条数)
*
* @param entityList list
* @param batchSize 最大调数
* @param batchSize 最大调数
* @return 结果
*/
default boolean insertOrUpdateBatch(Collection<T> entityList, int batchSize) {
@ -135,6 +135,7 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
/**
* 插入或更新
*
* @param entity entity
* @return 结果
*/
@ -144,6 +145,7 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
/**
* 查询Vo by id
*
* @param id 主键
* @return Vo
*/
@ -154,9 +156,9 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
/**
* 根据 ID 查询
*
* @param id 主键
* @param id 主键
* @param voClass Vo
* @param <C> 泛型
* @param <C> 泛型
* @return Vo
*/
default <C> C selectVoById(Serializable id, Class<C> voClass) {
@ -180,9 +182,9 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
/**
* 通过Ids 查询 list
*
* @param idList ids
* @param idList ids
* @param voClass Vo
* @param <C> 泛型
* @param <C> 泛型
* @return list
*/
default <C> List<C> selectVoBatchIds(Collection<? extends Serializable> idList, Class<C> voClass) {
@ -206,9 +208,9 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
/**
* selectVoByMap
*
* @param map map
* @param map map
* @param voClass Vo
* @param <C> 泛型
* @param <C> 泛型
* @return Vo
*/
default <C> List<C> selectVoByMap(Map<String, Object> map, Class<C> voClass) {
@ -234,7 +236,7 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
*
* @param wrapper 条件
* @param voClass Vo
* @param <C> 泛型
* @param <C> 泛型
* @return Vo
*/
default <C> C selectVoOne(Wrapper<T> wrapper, Class<C> voClass) {
@ -260,7 +262,7 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
*
* @param wrapper 条件
* @param voClass Vo
* @param <C> 泛型
* @param <C> 泛型
* @return list vo
*/
default <C> List<C> selectVoList(Wrapper<T> wrapper, Class<C> voClass) {
@ -274,9 +276,9 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
/**
* 分页查询Vo
*
* @param page 分页对象
* @param page 分页对象
* @param wrapper 条件
* @param <P> 泛型
* @param <P> 泛型
* @return IPage
*/
default <P extends IPage<V>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper) {
@ -286,11 +288,11 @@ public interface BaseMapperPlus<M, T, V> extends BaseMapper<T> {
/**
* 分页查询Vo
*
* @param page 分页对象
* @param page 分页对象
* @param wrapper 条件
* @param voClass Vo
* @param <C> 泛型
* @param <P> 泛型
* @param <C> 泛型
* @param <P> 泛型
* @return IPage
*/
default <C, P extends IPage<C>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper, Class<C> voClass) {

View File

@ -16,8 +16,8 @@ public class JdbcUtil {
/**
* 检查数据源是否可以连接
*
* @param driver 数据库驱动
* @param url url
* @param driver 数据库驱动
* @param url url
* @param username 用户名
* @param password 密码
* @return true = 是