Commit f9569f910f834ea960e7deb7c5368cf48e1f5ffd

Authored by wangzhs
1 parent 95159b02

切换 Mybatis-plus-join 依赖

yudao-dependencies/pom.xml
@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26 <mybatis-plus.version>3.5.3.1</mybatis-plus.version> 26 <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
27 <mybatis-plus-generator.version>3.5.3.1</mybatis-plus-generator.version> 27 <mybatis-plus-generator.version>3.5.3.1</mybatis-plus-generator.version>
28 <dynamic-datasource.version>3.6.1</dynamic-datasource.version> 28 <dynamic-datasource.version>3.6.1</dynamic-datasource.version>
29 - <mybatis-plus-join.version>1.3.4</mybatis-plus-join.version> 29 + <mybatis-plus-join-boot-starter.version>1.4.3.1</mybatis-plus-join-boot-starter.version>
30 <redisson.version>3.18.0</redisson.version> 30 <redisson.version>3.18.0</redisson.version>
31 <!-- 服务保障相关 --> 31 <!-- 服务保障相关 -->
32 <lock4j.version>2.2.3</lock4j.version> 32 <lock4j.version>2.2.3</lock4j.version>
@@ -211,9 +211,9 @@ @@ -211,9 +211,9 @@
211 </dependency> 211 </dependency>
212 212
213 <dependency> 213 <dependency>
214 - <groupId>icu.mhb</groupId>  
215 - <artifactId>mybatis-plus-join</artifactId>  
216 - <version>${mybatis-plus-join.version}</version> 214 + <groupId>com.github.yulichang</groupId>
  215 + <artifactId>mybatis-plus-join-boot-starter</artifactId>
  216 + <version>${mybatis-plus-join-boot-starter.version}</version>
217 </dependency> 217 </dependency>
218 218
219 <dependency> 219 <dependency>
yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml
@@ -60,8 +60,8 @@ @@ -60,8 +60,8 @@
60 </dependency> 60 </dependency>
61 61
62 <dependency> 62 <dependency>
63 - <groupId>icu.mhb</groupId>  
64 - <artifactId>mybatis-plus-join</artifactId> 63 + <groupId>com.github.yulichang</groupId>
  64 + <artifactId>mybatis-plus-join-boot-starter</artifactId>
65 </dependency> 65 </dependency>
66 66
67 </dependencies> 67 </dependencies>
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/config/YudaoMybatisAutoConfiguration.java
@@ -5,14 +5,12 @@ import cn.iocoder.yudao.framework.mybatis.core.handler.DefaultDBFieldHandler; @@ -5,14 +5,12 @@ import cn.iocoder.yudao.framework.mybatis.core.handler.DefaultDBFieldHandler;
5 import com.baomidou.mybatisplus.annotation.DbType; 5 import com.baomidou.mybatisplus.annotation.DbType;
6 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; 6 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
7 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator; 7 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
8 -import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;  
9 import com.baomidou.mybatisplus.extension.incrementer.H2KeyGenerator; 8 import com.baomidou.mybatisplus.extension.incrementer.H2KeyGenerator;
10 import com.baomidou.mybatisplus.extension.incrementer.KingbaseKeyGenerator; 9 import com.baomidou.mybatisplus.extension.incrementer.KingbaseKeyGenerator;
11 import com.baomidou.mybatisplus.extension.incrementer.OracleKeyGenerator; 10 import com.baomidou.mybatisplus.extension.incrementer.OracleKeyGenerator;
12 import com.baomidou.mybatisplus.extension.incrementer.PostgreKeyGenerator; 11 import com.baomidou.mybatisplus.extension.incrementer.PostgreKeyGenerator;
13 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; 12 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
14 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; 13 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
15 -import icu.mhb.mybatisplus.plugln.injector.JoinDefaultSqlInjector;  
16 import org.apache.ibatis.annotations.Mapper; 14 import org.apache.ibatis.annotations.Mapper;
17 import org.mybatis.spring.annotation.MapperScan; 15 import org.mybatis.spring.annotation.MapperScan;
18 import org.springframework.boot.autoconfigure.AutoConfiguration; 16 import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -43,11 +41,6 @@ public class YudaoMybatisAutoConfiguration { @@ -43,11 +41,6 @@ public class YudaoMybatisAutoConfiguration {
43 } 41 }
44 42
45 @Bean 43 @Bean
46 - public DefaultSqlInjector defaultSqlInjector() {  
47 - return new JoinDefaultSqlInjector(); // 使用Mybaits Plus Join定义的SQL注入器  
48 - }  
49 -  
50 - @Bean  
51 @ConditionalOnProperty(prefix = "mybatis-plus.global-config.db-config", name = "id-type", havingValue = "INPUT") 44 @ConditionalOnProperty(prefix = "mybatis-plus.global-config.db-config", name = "id-type", havingValue = "INPUT")
52 public IKeyGenerator keyGenerator(ConfigurableEnvironment environment) { 45 public IKeyGenerator keyGenerator(ConfigurableEnvironment environment) {
53 DbType dbType = IdTypeEnvironmentPostProcessor.getDbType(environment); 46 DbType dbType = IdTypeEnvironmentPostProcessor.getDbType(environment);
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
9 import com.baomidou.mybatisplus.core.metadata.IPage; 9 import com.baomidou.mybatisplus.core.metadata.IPage;
10 import com.baomidou.mybatisplus.core.toolkit.support.SFunction; 10 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
11 import com.baomidou.mybatisplus.extension.toolkit.Db; 11 import com.baomidou.mybatisplus.extension.toolkit.Db;
12 -import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper; 12 +import com.github.yulichang.base.MPJBaseMapper;
13 import org.apache.ibatis.annotations.Param; 13 import org.apache.ibatis.annotations.Param;
14 14
15 import java.util.Collection; 15 import java.util.Collection;
@@ -17,10 +17,10 @@ import java.util.List; @@ -17,10 +17,10 @@ import java.util.List;
17 17
18 /** 18 /**
19 * 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力 19 * 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力
20 - *  
21 - * 为什么继承 JoinBaseMapper 接口?支持 MyBatis Plus 多表 Join 的能力。 20 + * <p>
  21 + * 为什么继承 MPJBaseMapper 接口?支持 MyBatis Plus 多表 Join 的能力。
22 */ 22 */
23 -public interface BaseMapperX<T> extends JoinBaseMapper<T> { 23 +public interface BaseMapperX<T> extends MPJBaseMapper<T> {
24 24
25 default PageResult<T> selectPage(PageParam pageParam, @Param("ew") Wrapper<T> queryWrapper) { 25 default PageResult<T> selectPage(PageParam pageParam, @Param("ew") Wrapper<T> queryWrapper) {
26 // MyBatis Plus 查询 26 // MyBatis Plus 查询
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/ut/BaseDbUnitTest.java
@@ -5,8 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; @@ -5,8 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration;
5 import cn.iocoder.yudao.framework.test.config.SqlInitializationTestConfiguration; 5 import cn.iocoder.yudao.framework.test.config.SqlInitializationTestConfiguration;
6 import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; 6 import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
7 import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; 7 import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
8 -import icu.mhb.mybatisplus.plugln.interceptor.JoinInterceptor;  
9 -import icu.mhb.mybatisplus.plugln.interceptor.JoinInterceptorConfig; 8 +import com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration;
10 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; 9 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
11 import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; 10 import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
12 import org.springframework.boot.test.context.SpringBootTest; 11 import org.springframework.boot.test.context.SpringBootTest;
@@ -36,9 +35,7 @@ public class BaseDbUnitTest { @@ -36,9 +35,7 @@ public class BaseDbUnitTest {
36 // MyBatis 配置类 35 // MyBatis 配置类
37 YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 36 YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类
38 MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 37 MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类
39 - // TODO @升平:看看有没可能去掉下面两个类  
40 - JoinInterceptor.class, // MyBatis 的Join配置类  
41 - JoinInterceptorConfig.class, // MyBatis 的Join配置类 38 + MybatisPlusJoinAutoConfiguration.class, // MyBatis 的Join配置类
42 }) 39 })
43 public static class Application { 40 public static class Application {
44 } 41 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java
@@ -10,8 +10,6 @@ import com.baomidou.mybatisplus.annotation.TableField; @@ -10,8 +10,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
10 import com.baomidou.mybatisplus.annotation.TableId; 10 import com.baomidou.mybatisplus.annotation.TableId;
11 import com.baomidou.mybatisplus.annotation.TableName; 11 import com.baomidou.mybatisplus.annotation.TableName;
12 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; 12 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
13 -import icu.mhb.mybatisplus.plugln.annotations.JoinField;  
14 -import icu.mhb.mybatisplus.plugln.constant.RelevancyType;  
15 import lombok.*; 13 import lombok.*;
16 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 14 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
17 15
@@ -100,9 +98,6 @@ public class AdminUserDO extends TenantBaseDO { @@ -100,9 +98,6 @@ public class AdminUserDO extends TenantBaseDO {
100 /** 98 /**
101 * 用户所属部门 99 * 用户所属部门
102 */ 100 */
103 - @JoinField(masterModelClass = AdminUserDO.class, masterModelField = "deptId",  
104 - sunModelClass = DeptDO.class, sunModelField = "id",  
105 - relevancyType = RelevancyType.ONT_TO_ONE, sunAlias = "d")  
106 @TableField(exist = false, typeHandler = FastjsonTypeHandler.class) 101 @TableField(exist = false, typeHandler = FastjsonTypeHandler.class)
107 private DeptDO dept; 102 private DeptDO dept;
108 103
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
@@ -24,7 +24,7 @@ import cn.iocoder.yudao.module.system.service.dept.DeptService; @@ -24,7 +24,7 @@ import cn.iocoder.yudao.module.system.service.dept.DeptService;
24 import cn.iocoder.yudao.module.system.service.dept.PostService; 24 import cn.iocoder.yudao.module.system.service.dept.PostService;
25 import cn.iocoder.yudao.module.system.service.permission.PermissionService; 25 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
26 import cn.iocoder.yudao.module.system.service.tenant.TenantService; 26 import cn.iocoder.yudao.module.system.service.tenant.TenantService;
27 -import icu.mhb.mybatisplus.plugln.extend.Joins; 27 +import com.github.yulichang.wrapper.MPJLambdaWrapper;
28 import org.junit.jupiter.api.Test; 28 import org.junit.jupiter.api.Test;
29 import org.mockito.stubbing.Answer; 29 import org.mockito.stubbing.Answer;
30 import org.springframework.boot.test.mock.mockito.MockBean; 30 import org.springframework.boot.test.mock.mockito.MockBean;
@@ -776,7 +776,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { @@ -776,7 +776,6 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
776 776
777 @Test 777 @Test
778 public void testSelectUserIncludeDept_success() { 778 public void testSelectUserIncludeDept_success() {
779 - // 需设置 application-unit-test.yaml 文件中 spring.main.lazy-initialization: false  
780 779
781 // 准备部门数据 780 // 准备部门数据
782 DeptDO dept = new DeptDO(); 781 DeptDO dept = new DeptDO();
@@ -795,13 +794,13 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest { @@ -795,13 +794,13 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
795 // 调用 794 // 调用
796 Long userId = userService.createUser(reqVO); 795 Long userId = userService.createUser(reqVO);
797 796
798 - // 断言  
799 - AdminUserDO user = Joins.of(AdminUserDO.class) 797 + MPJLambdaWrapper<AdminUserDO> wrapper = new MPJLambdaWrapper<>(AdminUserDO.class)
  798 + .selectAll(AdminUserDO.class)
  799 + .selectAssociation(DeptDO.class, AdminUserDO::getDept)
800 .leftJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId) 800 .leftJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
801 - .oneToOneSelect(AdminUserDO::getDept, DeptDO.class)  
802 - .end()  
803 - .eq(AdminUserDO::getId, userId)  
804 - .joinGetOne(AdminUserDO.class); 801 + .eq(AdminUserDO::getId, userId);
  802 + AdminUserDO user = userMapper.selectJoinOne(AdminUserDO.class, wrapper);
  803 +
805 System.out.println("=========>" + user); 804 System.out.println("=========>" + user);
806 } 805 }
807 806