From 3326a1b81d69a0fd6c7e5a295fe0518334d4ef04 Mon Sep 17 00:00:00 2001 From: yulichang <570810310@qq.com> Date: Wed, 9 Nov 2022 11:14:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=8C=96=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-plus-join-boot-starter/pom.xml | 8 ++ .../MybatisPlusJoinAutoConfiguration.java | 24 +++- .../MybatisPlusJoinProperties.java | 9 +- ...itional-spring-configuration-metadata.json | 17 +++ .../yulichang/config/InterceptorConfig.java | 11 +- .../yulichang/config/MappingConfig.java | 1 - .../yulichang/injector/MPJSqlInjector.java | 2 - mybatis-plus-join-test/pom.xml | 38 ++++++ .../main/java/com/github/yulichang/Main.java | 7 - .../github/yulichang/test/Application.java | 13 ++ .../github/yulichang/test/ListenerEvent.java | 31 +++++ .../test/config/MybatisPlusConfig.java | 25 ++++ .../github/yulichang/test/dto/UserDTO.java | 41 ++++++ .../yulichang/test/entity/AddressDO.java | 31 +++++ .../github/yulichang/test/entity/AreaDO.java | 31 +++++ .../github/yulichang/test/entity/UserDO.java | 34 +++++ .../com/github/yulichang/test/enums/Sex.java | 24 ++++ .../yulichang/test/mapper/AddressMapper.java | 10 ++ .../yulichang/test/mapper/AreaMapper.java | 10 ++ .../yulichang/test/mapper/UserMapper.java | 10 ++ .../src/main/resources/application.yml | 22 +++ .../src/main/resources/db/data.sql | 79 +++++++++++ .../src/main/resources/db/schema.sql | 42 ++++++ .../com/github/yulichang/test/JoinTest.java | 126 ++++++++++++++++++ .../com/github/yulichang/test/MPJ131Test.java | 37 +++++ .../yulichang/test/QueryWrapperTest.java | 85 ++++++++++++ 26 files changed, 748 insertions(+), 20 deletions(-) create mode 100644 mybatis-plus-join-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json delete mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/Main.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/Application.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/ListenerEvent.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/dto/UserDTO.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/AddressDO.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/AreaDO.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/UserDO.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/enums/Sex.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/AddressMapper.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/AreaMapper.java create mode 100644 mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/UserMapper.java create mode 100644 mybatis-plus-join-test/src/main/resources/application.yml create mode 100644 mybatis-plus-join-test/src/main/resources/db/data.sql create mode 100644 mybatis-plus-join-test/src/main/resources/db/schema.sql create mode 100644 mybatis-plus-join-test/src/test/java/com/github/yulichang/test/JoinTest.java create mode 100644 mybatis-plus-join-test/src/test/java/com/github/yulichang/test/MPJ131Test.java create mode 100644 mybatis-plus-join-test/src/test/java/com/github/yulichang/test/QueryWrapperTest.java diff --git a/mybatis-plus-join-boot-starter/pom.xml b/mybatis-plus-join-boot-starter/pom.xml index 50c222f..f5de497 100644 --- a/mybatis-plus-join-boot-starter/pom.xml +++ b/mybatis-plus-join-boot-starter/pom.xml @@ -44,6 +44,14 @@ mybatis-plus-join-core 1.3.0 + + + org.springframework.boot + spring-boot-configuration-processor + true + 2.7.5 + + \ No newline at end of file diff --git a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java index 08f3a60..c15d33d 100644 --- a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java +++ b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java @@ -28,6 +28,10 @@ import org.springframework.core.annotation.Order; import javax.sql.DataSource; import java.util.List; +/** + * @author yulichang + * @since 1.3.2 + */ @SuppressWarnings("unused") @Configuration(proxyBeanMethods = false) @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) @@ -47,19 +51,27 @@ public class MybatisPlusJoinAutoConfiguration { this.properties = properties; } + /** + * mybatis plus join 拦截器 + */ @Bean @Order(Ordered.HIGHEST_PRECEDENCE) public MPJInterceptor mpjInterceptor() { return new MPJInterceptor(); } - + /** + * mybatis plus 拦截器配置 + */ @Bean @ConditionalOnBean(SqlSessionFactory.class) public InterceptorConfig interceptorConfig(List sqlSessionFactoryList) { - return new InterceptorConfig(sqlSessionFactoryList); + return new InterceptorConfig(sqlSessionFactoryList, properties.getBanner()); } + /** + * mybatis plus join 自定义方法 + */ @Bean @Order(Ordered.HIGHEST_PRECEDENCE) @ConditionalOnMissingBean({DefaultSqlInjector.class, AbstractSqlInjector.class, ISqlInjector.class}) @@ -67,12 +79,20 @@ public class MybatisPlusJoinAutoConfiguration { return new MPJSqlInjector(); } + /** + * 多表查询注解 + * + * @deprecated + */ @Bean @Order(Ordered.HIGHEST_PRECEDENCE) public MappingConfig mappingConfig() { return new MappingConfig(); } + /** + * springboot content 工具类 + */ @Bean @Order(Ordered.HIGHEST_PRECEDENCE) public SpringContentUtils springContentUtils() { diff --git a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinProperties.java b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinProperties.java index 97df694..054835a 100644 --- a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinProperties.java +++ b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinProperties.java @@ -5,15 +5,16 @@ import lombok.experimental.Accessors; import org.springframework.boot.context.properties.ConfigurationProperties; /** - * Configuration properties for MyBatis. - * - * @author Eddú Meléndez - * @author Kazuki Shimizu + * @author yulichang + * @since 1.3.2 */ @Data @Accessors(chain = true) @ConfigurationProperties(prefix = "mybatis-plus-join") public class MybatisPlusJoinProperties { + /** + * 打印banner + */ private Boolean banner = false; } diff --git a/mybatis-plus-join-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/mybatis-plus-join-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 0000000..aa9ddcb --- /dev/null +++ b/mybatis-plus-join-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,17 @@ +{ + "groups": [ + { + "sourceType": "com.github.yulichang.autoconfigure.MybatisPlusJoinProperties", + "name": "mybatis-plus-join", + "type": "com.github.yulichang.autoconfigure.MybatisPlusJoinProperties" + } + ], + "properties": [ + { + "name": "mybatis-plus-join.banner", + "defaultValue": true, + "type": "java.lang.Boolean", + "description": "打印 banner." + } + ] +} \ No newline at end of file diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/InterceptorConfig.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/InterceptorConfig.java index 2b632df..6bb41b1 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/InterceptorConfig.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/InterceptorConfig.java @@ -17,16 +17,19 @@ import java.util.List; * * @author yulichang */ -//@Configuration -//@ConditionalOnBean(SqlSessionFactory.class) -//@SuppressWarnings("unused") public class InterceptorConfig { private static final Log logger = LogFactory.getLog(InterceptorConfig.class); - public InterceptorConfig(List sqlSessionFactoryList) { + public InterceptorConfig(List sqlSessionFactoryList, Boolean banner) { replaceInterceptorChain(sqlSessionFactoryList); + if (banner) { + //打印banner + System.out.println(" _ _ |_ _ _|_. ___ _ | _ . _ . _ \n" + + "| | |\\/|_)(_| | |_\\ |_)||_|_\\ | (_) | | | \n" + + " / | / 1.3.0"); + } } @SuppressWarnings("unchecked") diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/MappingConfig.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/MappingConfig.java index ee742b5..0012a1a 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/MappingConfig.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/MappingConfig.java @@ -12,7 +12,6 @@ import org.springframework.context.ApplicationListener; * @author yulichang * @since 1.2.0 */ -//@Order(Ordered.HIGHEST_PRECEDENCE) public class MappingConfig implements ApplicationListener { @Override diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/injector/MPJSqlInjector.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/injector/MPJSqlInjector.java index 4850462..1ff8425 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/injector/MPJSqlInjector.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/injector/MPJSqlInjector.java @@ -26,8 +26,6 @@ import static java.util.stream.Collectors.toList; * @author yulichang * @see DefaultSqlInjector */ -//@Order(Ordered.HIGHEST_PRECEDENCE) -//@ConditionalOnMissingBean({DefaultSqlInjector.class, AbstractSqlInjector.class, ISqlInjector.class}) public class MPJSqlInjector extends DefaultSqlInjector { private static final List METHOD_LIST = Arrays.asList("SelectOne", "SelectCount", diff --git a/mybatis-plus-join-test/pom.xml b/mybatis-plus-join-test/pom.xml index 9eaf596..c4b642e 100644 --- a/mybatis-plus-join-test/pom.xml +++ b/mybatis-plus-join-test/pom.xml @@ -1,4 +1,5 @@ + @@ -33,9 +34,46 @@ + 2.5.4 + 8 8 UTF-8 + + + org.springframework.boot + spring-boot-starter + ${springboot.version} + + + org.springframework.boot + spring-boot-starter-test + ${springboot.version} + test + + + com.h2database + h2 + 2.1.214 + runtime + + + org.projectlombok + lombok + 1.18.24 + + + com.github.yulichang + mybatis-plus-join-boot-starter + 1.3.0 + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.5 + + + \ No newline at end of file diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/Main.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/Main.java deleted file mode 100644 index a2a33f2..0000000 --- a/mybatis-plus-join-test/src/main/java/com/github/yulichang/Main.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.yulichang; - -public class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); - } -} \ No newline at end of file diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/Application.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/Application.java new file mode 100644 index 0000000..ee0e144 --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/Application.java @@ -0,0 +1,13 @@ +package com.github.yulichang.test; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/ListenerEvent.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/ListenerEvent.java new file mode 100644 index 0000000..c07dd89 --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/ListenerEvent.java @@ -0,0 +1,31 @@ +package com.github.yulichang.test; + +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; +import com.github.yulichang.test.mapper.UserMapper; +import org.jetbrains.annotations.NotNull; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ApplicationContextEvent; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.List; + +@Component +@SuppressWarnings("unused") +public class ListenerEvent implements ApplicationListener { + + @Resource + private UserMapper userMapper; + + @PostConstruct + public void init() { + List infos = TableInfoHelper.getTableInfos(); + } + + @Override + public void onApplicationEvent(@NotNull ApplicationContextEvent applicationContextEvent) { + + } +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java new file mode 100644 index 0000000..73dd24d --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java @@ -0,0 +1,25 @@ +package com.github.yulichang.test.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * mybatis-plus配置 + */ +@Configuration +public class MybatisPlusConfig { + + /** + * 分页插件 + */ + @Bean + public MybatisPlusInterceptor paginationInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + PaginationInnerInterceptor page = new PaginationInnerInterceptor(); + page.setOptimizeJoin(false); + interceptor.addInnerInterceptor(page); + return interceptor; + } +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/dto/UserDTO.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/dto/UserDTO.java new file mode 100644 index 0000000..67a3ef9 --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/dto/UserDTO.java @@ -0,0 +1,41 @@ +package com.github.yulichang.test.dto; + +import com.github.yulichang.test.entity.AddressDO; +import com.github.yulichang.test.enums.Sex; +import lombok.Data; +import lombok.ToString; + +import java.util.List; + + +/** + * userDTO + */ +@Data +@ToString +public class UserDTO { + /** user */ + private Integer id; + /** user */ + private String nameName; + /** user */ + private Sex sex; + /** user */ + private String headImg; + /** user */ + private String userHeadImg;//同 headImg 别名测试 + /** user_address */ + private String tel; + /** user_address */ + private String address; + /** user_address */ + private String userAddress; + /** area */ + private String province; + /** area */ + private String city; + /** area */ + private String area; + + private List addressList; +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/AddressDO.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/AddressDO.java new file mode 100644 index 0000000..218fd9e --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/AddressDO.java @@ -0,0 +1,31 @@ +package com.github.yulichang.test.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Data +@ToString +@Accessors(chain = true) +@EqualsAndHashCode +@TableName("address") +public class AddressDO { + + @TableId + private Integer id; + + private Integer userId; + + private Integer areaId; + + private String tel; + + private String address; + + @TableLogic + private Boolean del; +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/AreaDO.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/AreaDO.java new file mode 100644 index 0000000..c58c89f --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/AreaDO.java @@ -0,0 +1,31 @@ +package com.github.yulichang.test.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Data +@ToString +@Accessors(chain = true) +@EqualsAndHashCode +@TableName("area") +public class AreaDO { + + @TableId + private Integer id; + + private String province; + + private String city; + + private String area; + + private String postcode; + + @TableLogic + private Boolean del; +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/UserDO.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/UserDO.java new file mode 100644 index 0000000..ecb05a3 --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/entity/UserDO.java @@ -0,0 +1,34 @@ +package com.github.yulichang.test.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.yulichang.test.enums.Sex; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Data +@ToString +@Accessors(chain = true) +@EqualsAndHashCode +@TableName("`user`") +public class UserDO { + + @TableId + private Integer id; + + @TableField("name") + private String sdafrrvnbioiure; + + private Sex sex; + + private String headImg; + + private Integer addressId; + + @TableLogic + private Boolean del; +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/enums/Sex.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/enums/Sex.java new file mode 100644 index 0000000..7ab9f24 --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/enums/Sex.java @@ -0,0 +1,24 @@ +package com.github.yulichang.test.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public enum Sex { + + MAN(0, "男"), + + WOMAN(1, "女"); + + @EnumValue + private final int code; + private final String des; + + Sex(int code, String des) { + this.code = code; + this.des = des; + } + +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/AddressMapper.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/AddressMapper.java new file mode 100644 index 0000000..bbde4a3 --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/AddressMapper.java @@ -0,0 +1,10 @@ +package com.github.yulichang.test.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.github.yulichang.test.entity.AddressDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +@SuppressWarnings("unused") +public interface AddressMapper extends MPJBaseMapper { +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/AreaMapper.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/AreaMapper.java new file mode 100644 index 0000000..7a3314c --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/AreaMapper.java @@ -0,0 +1,10 @@ +package com.github.yulichang.test.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.github.yulichang.test.entity.AreaDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +@SuppressWarnings("unused") +public interface AreaMapper extends MPJBaseMapper { +} diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/UserMapper.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/UserMapper.java new file mode 100644 index 0000000..4088f5b --- /dev/null +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/mapper/UserMapper.java @@ -0,0 +1,10 @@ +package com.github.yulichang.test.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.github.yulichang.test.entity.UserDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserMapper extends MPJBaseMapper { + +} diff --git a/mybatis-plus-join-test/src/main/resources/application.yml b/mybatis-plus-join-test/src/main/resources/application.yml new file mode 100644 index 0000000..ce7f946 --- /dev/null +++ b/mybatis-plus-join-test/src/main/resources/application.yml @@ -0,0 +1,22 @@ +spring: + datasource: + driver-class-name: org.h2.Driver + url: jdbc:h2:mem:test + username: root + password: test + sql: + init: + schema-locations: classpath:db/schema.sql + data-locations: classpath:db/data.sql +mybatis-plus: + global-config: + db-config: + logic-delete-field: del + logic-delete-value: true + logic-not-delete-value: false + banner: true +# configuration: +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + +mybatis-plus-join: + banner: false \ No newline at end of file diff --git a/mybatis-plus-join-test/src/main/resources/db/data.sql b/mybatis-plus-join-test/src/main/resources/db/data.sql new file mode 100644 index 0000000..19f1926 --- /dev/null +++ b/mybatis-plus-join-test/src/main/resources/db/data.sql @@ -0,0 +1,79 @@ +-- noinspection SqlDialectInspectionForFile + +-- noinspection SqlNoDataSourceInspectionForFile + +DELETE FROM area; + +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10001, '北京市01', '北京01', '朝阳01', '80001', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10002, '北京市02', '北京02', '朝阳02', '80002', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10003, '北京市03', '北京03', '朝阳03', '80003', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10004, '北京市04', '北京04', '朝阳04', '80004', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10005, '北京市05', '北京05', '朝阳05', '80005', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10006, '北京市06', '北京06', '朝阳06', '80006', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10007, '北京市07', '北京07', '朝阳07', '80007', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10008, '北京市08', '北京08', '朝阳08', '80008', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10009, '北京市09', '北京09', '朝阳09', '80009', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10010, '北京市10', '北京10', '朝阳10', '80010', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10011, '北京市11', '北京11', '朝阳11', '80011', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10012, '北京市12', '北京12', '朝阳12', '80012', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10013, '北京市13', '北京13', '朝阳13', '80013', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10014, '北京市14', '北京14', '朝阳14', '80014', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10015, '北京市15', '北京15', '朝阳15', '80015', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10016, '北京市16', '北京16', '朝阳16', '80016', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10017, '北京市17', '北京17', '朝阳17', '80017', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10018, '北京市18', '北京18', '朝阳18', '80018', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10019, '北京市19', '北京19', '朝阳19', '80019', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10020, '北京市20', '北京20', '朝阳20', '80020', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10021, '北京市21', '北京21', '朝阳21', '80021', false); +INSERT INTO area (id, province, city, area, postcode, del) VALUES (10022, '北京市22', '北京22', '朝阳22', '80022', false); + +DELETE FROM `user`; + +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES ( 1, '张三01', 1, 1, 'https://url-01', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES ( 2, '李四02', 1, 0, 'https://url-02', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES ( 3, '李四02', 1, 0, 'https://url-03', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES ( 4, '李四04', 1, 0, 'https://url-04', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES ( 5, '李四05', 1, 0, 'https://url-05', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES ( 6, '李四06', 1, 0, 'https://url-06', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES ( 7, '李四07', 1, 0, 'https://url-07', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES ( 8, '李四08', 1, 0, 'https://url-08', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES ( 9, '李四09', 1, 0, 'https://url-09', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (10, '李四10', 1, 0, 'https://url-10', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (11, '李四11', 1, 0, 'https://url-11', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (12, '李四12', 1, 0, 'https://url-12', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (13, '李四13', 1, 0, 'https://url-13', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (14, '李四14', 1, 0, 'https://url-14', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (15, '李四15', 1, 0, 'https://url-15', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (16, '李四16', 1, 0, 'https://url-16', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (17, '李四17', 1, 0, 'https://url-17', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (18, '李四18', 1, 0, 'https://url-18', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (19, '李四19', 1, 0, 'https://url-19', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (20, '李四20', 1, 0, 'https://url-20', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (21, '李四21', 1, 0, 'https://url-21', false); +INSERT INTO `user` (id, `name`, `address_id`, sex, head_img, del) VALUES (22, '李四22', 1, 0, 'https://url-22', false); + + +DELETE FROM address; + +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 1, 1, 10001, '10000000001', '曹县01', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 2, 1, 10002, '10000000002', '曹县02', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 3, 1, 10003, '10000000003', '曹县03', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 4, 1, 10004, '10000000004', '曹县04', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 5, 1, 10005, '10000000005', '曹县05', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 6, 1, 10006, '10000000006', '曹县06', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 7, 1, 10007, '10000000007', '曹县07', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 8, 1, 10008, '10000000008', '曹县08', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES ( 9, 1, 10009, '10000000009', '曹县09', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (10,10, 10010, '10000000010', '曹县10', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (11,11, 10011, '10000000011', '曹县11', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (12,12, 10012, '10000000012', '曹县12', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (13,13, 10013, '10000000013', '曹县13', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (14,14, 10014, '10000000014', '曹县14', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (15,15, 10015, '10000000015', '曹县15', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (16,16, 10016, '10000000016', '曹县16', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (17,17, 10017, '10000000017', '曹县17', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (18,18, 10018, '10000000018', '曹县18', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (19,19, 10019, '10000000019', '曹县19', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (20,20, 10020, '10000000020', '曹县20', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (21,21, 10021, '10000000021', '曹县21', false); +INSERT INTO address (id, user_id, area_id, tel, address, del) VALUES (22,22, 10022, '10000000022', '曹县22', false); \ No newline at end of file diff --git a/mybatis-plus-join-test/src/main/resources/db/schema.sql b/mybatis-plus-join-test/src/main/resources/db/schema.sql new file mode 100644 index 0000000..264b2ea --- /dev/null +++ b/mybatis-plus-join-test/src/main/resources/db/schema.sql @@ -0,0 +1,42 @@ +-- noinspection SqlDialectInspectionForFile + +-- noinspection SqlNoDataSourceInspectionForFile + +DROP TABLE IF EXISTS area; + +create table area +( + id int auto_increment + primary key, + province varchar(255) null, + city varchar(255) null, + area varchar(255) null, + postcode varchar(255) null, + del bit +); + +DROP TABLE IF EXISTS `user`; + +create table `user` +( + id int auto_increment + primary key, + `name` varchar(255) not null, + `address_id` int not null, + sex tinyint not null, + head_img varchar(255) not null, + del bit +); + +DROP TABLE IF EXISTS address; + +create table address +( + id int auto_increment + primary key, + user_id int null, + area_id int null, + tel varchar(255) null, + address varchar(255) null, + del bit +); \ No newline at end of file diff --git a/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/JoinTest.java b/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/JoinTest.java new file mode 100644 index 0000000..85bd43d --- /dev/null +++ b/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/JoinTest.java @@ -0,0 +1,126 @@ +package com.github.yulichang.test; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.test.dto.UserDTO; +import com.github.yulichang.test.entity.AddressDO; +import com.github.yulichang.test.entity.AreaDO; +import com.github.yulichang.test.entity.UserDO; +import com.github.yulichang.test.mapper.UserMapper; +import com.github.yulichang.toolkit.MPJWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * 连表测试类 + *

+ * 支持mybatis-plus 查询枚举字段 + * 支持mybatis-plus typeHandle功能 + *

+ * 移除了mybatis-plus 逻辑删除支持,逻辑删除需要在连表查询时自己添加对应的条件 + */ +@SpringBootTest +class JoinTest { + @Resource + private UserMapper userMapper; + + /** + * 一对多 + */ + @Test + void testJoin() { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(UserDO.class) + .selectCollection(AddressDO.class, UserDTO::getAddressList) + .leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId) + .orderByDesc(UserDO::getId); + + List list = userMapper.selectJoinList(UserDTO.class, wrapper); + list.forEach(System.out::println); + } + + + /** + * 简单的分页关联查询 lambda + */ + @Test + void test1() { + IPage iPage = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class, + MPJWrappers.lambdaJoin() + .selectAll(UserDO.class) + .select(AddressDO::getAddress) + .select(AreaDO::getProvince) + .leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId) + .leftJoin(AreaDO.class, AreaDO::getId, AddressDO::getAreaId)); + iPage.getRecords().forEach(System.out::println); + } + + /** + * 简单的分页关联查询 lambda + * ON语句多条件 + */ + @Test + void test3() { + IPage page = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class, + MPJWrappers.lambdaJoin() + .selectAll(UserDO.class) + .select(AddressDO::getAddress) + .leftJoin(AddressDO.class, on -> on + .eq(UserDO::getId, AddressDO::getUserId) + .eq(UserDO::getId, AddressDO::getUserId)) + .eq(UserDO::getId, 1) + .and(i -> i.eq(UserDO::getHeadImg, "er") + .or() + .eq(AddressDO::getUserId, 1)) + .eq(UserDO::getId, 1)); + page.getRecords().forEach(System.out::println); + } + + /** + * 简单的函数使用 + */ + @Test + void test4() { + UserDTO one = userMapper.selectJoinOne(UserDTO.class, MPJWrappers.lambdaJoin() + .selectSum(UserDO::getId) + .selectMax(UserDO::getId, UserDTO::getHeadImg) + .leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId) + .eq(UserDO::getId, 1)); + System.out.println(one); + } + + + /** + * 忽略个别查询字段 + */ + @Test + void test6() { + IPage page = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class, + MPJWrappers.lambdaJoin() + .selectAll(UserDO.class) + .select(AddressDO.class, p -> true) + .select(AddressDO::getAddress) + .leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId) + .eq(UserDO::getId, 1)); + page.getRecords().forEach(System.out::println); + } + + + /** + * 关联查询返回map + */ + @Test + void test7() { + List> list = userMapper.selectJoinMaps(MPJWrappers.lambdaJoin() + .selectAll(UserDO.class) + .select(AddressDO::getAddress) + .leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId) + .eq(UserDO::getId, 1)); + list.forEach(System.out::println); + } +} diff --git a/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/MPJ131Test.java b/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/MPJ131Test.java new file mode 100644 index 0000000..f273116 --- /dev/null +++ b/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/MPJ131Test.java @@ -0,0 +1,37 @@ +package com.github.yulichang.test; + +import com.github.yulichang.test.mapper.UserMapper; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; + +/** + * 测试 + */ +@SpringBootTest +@SuppressWarnings("unused") +class MPJ131Test { + @Resource + private UserMapper userMapper; + + /** + * 先明确 你要干啥? + * 在mapper中定义lambda形式的resultMap? + * 要解决问题 + * 1、只初始化了部分数据库实体类? NPE + *

+ * stater + * core + * anntion + * test + *

+ * 超高自由度的sql拼接器? + * 解决了自连接和子查询和各种函数 + * 如果底层调用MPJLambdaWrapper那样还有什么意义 + */ + @Test + void testJoin() { + System.out.println(1); + } +} diff --git a/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/QueryWrapperTest.java b/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/QueryWrapperTest.java new file mode 100644 index 0000000..6777132 --- /dev/null +++ b/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/QueryWrapperTest.java @@ -0,0 +1,85 @@ +package com.github.yulichang.test; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.query.MPJQueryWrapper; +import com.github.yulichang.test.dto.UserDTO; +import com.github.yulichang.test.entity.UserDO; +import com.github.yulichang.test.mapper.UserMapper; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +@SpringBootTest +class QueryWrapperTest { + @Resource + private UserMapper userMapper; + + /** + * 链表查询 + */ + @Test + void test1() { + UserDO userDO = userMapper.selectJoinOne(UserDO.class, new MPJQueryWrapper() + .selectAll(UserDO.class).last("LIMIT 1")); + System.out.println(userDO); + + UserDTO dto = userMapper.selectJoinOne(UserDTO.class, new MPJQueryWrapper() + .selectAll(UserDO.class) + .select("name AS nameName") + .last("LIMIT 1")); + System.out.println(dto); + } + + @Test + void test2() { + List userDO = userMapper.selectJoinList(UserDO.class, new MPJQueryWrapper() + .selectAll(UserDO.class) + .leftJoin("address t2 on t2.user_id = t.id") + .le("t.id ", 10)); + System.out.println(userDO); + + List dto = userMapper.selectJoinList(UserDTO.class, new MPJQueryWrapper() + .selectAll(UserDO.class) + .select("t2.address AS userAddress") + .leftJoin("address t2 on t2.user_id = t.id") + .le("t.id ", 10)); + System.out.println(dto); + } + + @Test + void test3() { + IPage userDO = userMapper.selectJoinPage(new Page<>(1, 10), UserDO.class, new MPJQueryWrapper() + .selectAll(UserDO.class) + .leftJoin("address t2 on t2.user_id = t.id") + .lt("t.id ", 5)); + System.out.println(userDO); + + IPage dto = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class, new MPJQueryWrapper() + .selectAll(UserDO.class) + .select("t2.address AS userAddress") + .leftJoin("address t2 on t2.user_id = t.id") + .lt("t.id ", 5)); + System.out.println(dto); + } + + @Test + void test4() { + List> maps = userMapper.selectJoinMaps(new MPJQueryWrapper() + .selectAll(UserDO.class) + .leftJoin("address t2 on t2.user_id = t.id") + .lt("t.id ", 5)); + System.out.println(maps); + + List> joinMaps = userMapper.selectJoinMaps(new MPJQueryWrapper() + .selectAll(UserDO.class) + .select("t2.address AS userAddress") + .leftJoin("address t2 on t2.user_id = t.id") + .lt("t.id ", 5)); + System.out.println(joinMaps); + } + +} From f29655c2067c7509a12bbc176753f20e7d48034e Mon Sep 17 00:00:00 2001 From: yulichang <570810310@qq.com> Date: Wed, 9 Nov 2022 13:21:07 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=8C=96=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MybatisPlusJoinAutoConfiguration.java | 1 - mybatis-plus-join-test/pom.xml | 1 + .../java/com/github/yulichang/test/ListenerEvent.java | 11 ++++++----- .../src/main/resources/application.yml | 9 ++++++--- .../test/java/com/github/yulichang/test/JoinTest.java | 4 ++++ 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java index c15d33d..f1f52a2 100644 --- a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java +++ b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java @@ -55,7 +55,6 @@ public class MybatisPlusJoinAutoConfiguration { * mybatis plus join 拦截器 */ @Bean - @Order(Ordered.HIGHEST_PRECEDENCE) public MPJInterceptor mpjInterceptor() { return new MPJInterceptor(); } diff --git a/mybatis-plus-join-test/pom.xml b/mybatis-plus-join-test/pom.xml index c4b642e..5342ae9 100644 --- a/mybatis-plus-join-test/pom.xml +++ b/mybatis-plus-join-test/pom.xml @@ -69,6 +69,7 @@ mybatis-plus-join-boot-starter 1.3.0 + com.github.pagehelper pagehelper-spring-boot-starter diff --git a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/ListenerEvent.java b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/ListenerEvent.java index c07dd89..f161569 100644 --- a/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/ListenerEvent.java +++ b/mybatis-plus-join-test/src/main/java/com/github/yulichang/test/ListenerEvent.java @@ -1,8 +1,8 @@ package com.github.yulichang.test; -import com.baomidou.mybatisplus.core.metadata.TableInfo; -import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.github.yulichang.test.mapper.UserMapper; +import com.zaxxer.hikari.HikariDataSource; +import org.apache.ibatis.session.SqlSessionFactory; import org.jetbrains.annotations.NotNull; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ApplicationContextEvent; @@ -10,18 +10,19 @@ import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.Resource; -import java.util.List; @Component @SuppressWarnings("unused") public class ListenerEvent implements ApplicationListener { - + @Resource + private HikariDataSource hikariDataSource; @Resource private UserMapper userMapper; + private SqlSessionFactory sqlSessionFactory; @PostConstruct public void init() { - List infos = TableInfoHelper.getTableInfos(); + System.out.println("1"); } @Override diff --git a/mybatis-plus-join-test/src/main/resources/application.yml b/mybatis-plus-join-test/src/main/resources/application.yml index ce7f946..2c33924 100644 --- a/mybatis-plus-join-test/src/main/resources/application.yml +++ b/mybatis-plus-join-test/src/main/resources/application.yml @@ -8,6 +8,8 @@ spring: init: schema-locations: classpath:db/schema.sql data-locations: classpath:db/data.sql + + mybatis-plus: global-config: db-config: @@ -15,8 +17,9 @@ mybatis-plus: logic-delete-value: true logic-not-delete-value: false banner: true -# configuration: -# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +# 打印 mybatis plus join banner mybatis-plus-join: - banner: false \ No newline at end of file + banner: true \ No newline at end of file diff --git a/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/JoinTest.java b/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/JoinTest.java index 85bd43d..bde0395 100644 --- a/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/JoinTest.java +++ b/mybatis-plus-join-test/src/test/java/com/github/yulichang/test/JoinTest.java @@ -9,6 +9,7 @@ import com.github.yulichang.test.entity.UserDO; import com.github.yulichang.test.mapper.UserMapper; import com.github.yulichang.toolkit.MPJWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.ibatis.session.SqlSessionFactory; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @@ -25,9 +26,12 @@ import java.util.Map; * 移除了mybatis-plus 逻辑删除支持,逻辑删除需要在连表查询时自己添加对应的条件 */ @SpringBootTest +@SuppressWarnings("unused") class JoinTest { @Resource private UserMapper userMapper; + @Resource + private SqlSessionFactory sqlSessionFactory; /** * 一对多