Commit f9569f910f834ea960e7deb7c5368cf48e1f5ffd
1 parent
95159b02
切换 Mybatis-plus-join 依赖
Showing
7 changed files
with
19 additions
and
35 deletions
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 |