From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001 From: xiejun <xiejun@vci-tech.com> Date: 星期五, 01 十一月 2024 15:11:19 +0800 Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成" --- Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/config/MybatisPlusConfiguration.java | 134 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 134 insertions(+), 0 deletions(-) diff --git a/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/config/MybatisPlusConfiguration.java b/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/config/MybatisPlusConfiguration.java new file mode 100644 index 0000000..6263cfa --- /dev/null +++ b/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/config/MybatisPlusConfiguration.java @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 搴勯獮 (smallchill@163.com) + */ +package org.springblade.core.mp.config; + +import com.baomidou.mybatisplus.core.injector.ISqlInjector; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; +import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor; +import lombok.AllArgsConstructor; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.StringValue; +import org.mybatis.spring.annotation.MapperScan; +import org.springblade.core.launch.props.BladePropertySource; +import org.springblade.core.mp.injector.BladeSqlInjector; +import org.springblade.core.mp.intercept.QueryInterceptor; +import org.springblade.core.mp.plugins.BladePaginationInterceptor; +import org.springblade.core.mp.plugins.SqlLogInterceptor; +import org.springblade.core.mp.props.MybatisPlusProperties; +import org.springblade.core.mp.resolver.PageArgumentResolver; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.constant.BladeConstant; +import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.ObjectUtil; +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.core.annotation.AnnotationAwareOrderComparator; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.List; + +/** + * mybatis-plus 閰嶇疆 + * + * @author Chill + */ +@AutoConfiguration +@AllArgsConstructor +@MapperScan("org.springblade.**.mapper.**") +@EnableConfigurationProperties(MybatisPlusProperties.class) +@BladePropertySource(value = "classpath:/blade-mybatis.yml") +public class MybatisPlusConfiguration implements WebMvcConfigurer { + + /** + * 绉熸埛鎷︽埅鍣� + */ + @Bean + @ConditionalOnMissingBean(TenantLineInnerInterceptor.class) + public TenantLineInnerInterceptor tenantLineInnerInterceptor() { + return new TenantLineInnerInterceptor(new TenantLineHandler() { + @Override + public Expression getTenantId() { + return new StringValue(Func.toStr(AuthUtil.getTenantId(), BladeConstant.ADMIN_TENANT_ID)); + } + + @Override + public boolean ignoreTable(String tableName) { + return true; + } + }); + } + + /** + * mybatis-plus 鎷︽埅鍣ㄩ泦鍚� + */ + @Bean + @ConditionalOnMissingBean(MybatisPlusInterceptor.class) + public MybatisPlusInterceptor mybatisPlusInterceptor(ObjectProvider<QueryInterceptor[]> queryInterceptors, + TenantLineInnerInterceptor tenantLineInnerInterceptor, + MybatisPlusProperties mybatisPlusProperties) { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 閰嶇疆绉熸埛鎷︽埅鍣� + if (mybatisPlusProperties.getTenantMode()) { + interceptor.addInnerInterceptor(tenantLineInnerInterceptor); + } + // 閰嶇疆鍒嗛〉鎷︽埅鍣� + BladePaginationInterceptor paginationInterceptor = new BladePaginationInterceptor(); + // 閰嶇疆鑷畾涔夋煡璇㈡嫤鎴櫒 + QueryInterceptor[] queryInterceptorArray = queryInterceptors.getIfAvailable(); + if (ObjectUtil.isNotEmpty(queryInterceptorArray)) { + AnnotationAwareOrderComparator.sort(queryInterceptorArray); + paginationInterceptor.setQueryInterceptors(queryInterceptorArray); + } + paginationInterceptor.setMaxLimit(mybatisPlusProperties.getPageLimit()); + paginationInterceptor.setOverflow(mybatisPlusProperties.getOverflow()); + paginationInterceptor.setOptimizeJoin(mybatisPlusProperties.getOptimizeJoin()); + interceptor.addInnerInterceptor(paginationInterceptor); + return interceptor; + } + + /** + * sql 鏃ュ織 + */ + @Bean + public SqlLogInterceptor sqlLogInterceptor(MybatisPlusProperties mybatisPlusProperties) { + return new SqlLogInterceptor(mybatisPlusProperties); + } + + /** + * sql 娉ㄥ叆 + */ + @Bean + @ConditionalOnMissingBean(ISqlInjector.class) + public ISqlInjector sqlInjector() { + return new BladeSqlInjector(); + } + + /** + * page 瑙f瀽鍣� + */ + @Override + public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { + argumentResolvers.add(new PageArgumentResolver()); + } + +} + -- Gitblit v1.9.3