This commit is contained in:
admin 2021-02-07 11:55:46 +08:00
parent e82c72ae6f
commit c37946221c
32 changed files with 436 additions and 303 deletions

View File

@ -16,11 +16,11 @@
<dependency> <dependency>
<groupId>com.github.yulichang</groupId> <groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join</artifactId> <artifactId>mybatis-plus-join</artifactId>
<version>1.0.6</version> <version>1.0.7</version>
</dependency> </dependency>
``` ```
2. 配置插件,添加MyJoinInterceptor 2. 配置插件,添加MPJInterceptor
```java ```java
@Configuration @Configuration
@ -34,20 +34,19 @@
//分页插件 //分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
//连表插件 //连表插件
interceptor.addInnerInterceptor(new MyJoinInterceptor()); interceptor.addInnerInterceptor(new MPJInterceptor());
//可以添加多租户或其他插件 return interceptor;
return mybatisPlusInterceptor;
} }
} }
``` ```
### 使用 ### 使用
* mapper继承MyBaseMapper (必选) * mapper继承MPJBaseMapper (必选)
* service继承MyBaseService (可选) * service继承MPJBaseService (可选)
* serviceImpl继承MyBaseServiceImpl (可选) * serviceImpl继承MPJBaseServiceImpl (可选)
1. MyBaseMapper继承BaseMapper,在原有的方法基础上又添加了以下方法: 1. MPJBaseMapper继承BaseMapper,在原有的方法基础上又添加了以下方法:
* selectJoinOne 连表查询一条记录对象 * selectJoinOne 连表查询一条记录对象
* selectJoinList 连表查询返回命中记录对象集合 * selectJoinList 连表查询返回命中记录对象集合
* selectJoinPage 连表分页查询对象集合 * selectJoinPage 连表分页查询对象集合
@ -55,13 +54,13 @@
* selectJoinMaps 连表查询返回命中记录Map集合 * selectJoinMaps 连表查询返回命中记录Map集合
* selectJoinMapsPage 连表分页查询返回Map集合 * selectJoinMapsPage 连表分页查询返回Map集合
2. MyBaseService 继承了IService,同样添加以上方法 2. MPJBaseService 继承了IService,同样添加以上方法
3. MyBaseServiceImpl 继承了ServiceImpl,同样添加了以上方法 3. MPJBaseServiceImpl 继承了ServiceImpl,同样添加了以上方法
## 核心类 MyQueryWrapper, MyLambdaQueryWrapper和MyJoinLambdaQueryWrapper ## 核心类 MPJQueryWrapper,MPJLambdaQueryWrapper和MPJJoinLambdaQueryWrapper
|-|MyQueryWrapper|MyLambdaQueryWrapper|MyJoinLambdaQueryWrapper| |-|MPJQueryWrapper|MPJLambdaQueryWrapper|MPJJoinLambdaQueryWrapper|
|---|---|---|---| |---|---|---|---|
|select(String)|支持|<font color=red>**支持**|不支持| |select(String)|支持|<font color=red>**支持**|不支持|
|select(lambda)|不支持|仅支持主表lambda|所有表lambda| |select(lambda)|不支持|仅支持主表lambda|所有表lambda|
@ -70,14 +69,14 @@
|条件String|支持|不支持|不支持| |条件String|支持|不支持|不支持|
|条件lambda|不支持|仅支持主表lambda|所有表lambda| |条件lambda|不支持|仅支持主表lambda|所有表lambda|
MyQueryWrapper相当于mp的QueryWrapper MPJQueryWrapper相当于mp的QueryWrapper
MyLambdaQueryWrapper相当于mp的LambdaQueryWrapper MPJLambdaQueryWrapper相当于mp的LambdaQueryWrapper
两者可以无缝切换 两者可以无缝切换
MyQueryWrapper.lambda() ===> MyLambdaQueryWrapper MPJQueryWrapper.lambda() ===> MPJLambdaQueryWrapper
MyLambdaQueryWrapper.stringQuery() ===> MyQueryWrapper MPJLambdaQueryWrapper.stringQuery() ===> MPJQueryWrapper
## MyQueryWrapper和MyLambdaQueryWrapper ## MPJQueryWrapper和MPJLambdaQueryWrapper
### 简单的3表查询 ### 简单的3表查询
@ -88,7 +87,7 @@ class test {
void testJoin() { void testJoin() {
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class, List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
new MyLambdaQueryWrapper<UserDO>() new MPJLambdaQueryWrapper<UserDO>()
.selectAll(UserDO.class) .selectAll(UserDO.class)
.select("addr.tel", "addr.address", "a.province") .select("addr.tel", "addr.address", "a.province")
.leftJoin("user_address addr on t.id = addr.user_id") .leftJoin("user_address addr on t.id = addr.user_id")
@ -144,7 +143,7 @@ class test {
void testJoin() { void testJoin() {
IPage<UserDTO> page = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class, IPage<UserDTO> page = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class,
new MyLambdaQueryWrapper<UserDO>() new MPJLambdaQueryWrapper<UserDO>()
.selectAll(UserDO.class) .selectAll(UserDO.class)
.select("addr.tel", "addr.address") .select("addr.tel", "addr.address")
.select("a.province") .select("a.province")
@ -181,7 +180,7 @@ class test {
void testJoin() { void testJoin() {
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class, List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
new MyLambdaQueryWrapper<UserDO>() new MPJLambdaQueryWrapper<UserDO>()
.selectAll(UserDO.class) .selectAll(UserDO.class)
.select("addr.tel", "addr.address") .select("addr.tel", "addr.address")
//行列转换 //行列转换
@ -224,13 +223,13 @@ ORDER BY
addr.id DESC addr.id DESC
``` ```
## MyJoinLambdaQueryWrapper用法 ## MPJJoinLambdaQueryWrapper用法
MyJoinLambdaQueryWrapper与上面连个Wrapper不同,是一套新的支持多表的wrapper MPJJoinLambdaQueryWrapper与上面连个Wrapper不同,是一套新的支持多表的wrapper
MyQueryWrapper是基于QueryWrapper扩展的 MyLambdaQueryWrapper是基于LambdaQueryWrapper扩展的 MPJQueryWrapper是基于QueryWrapper扩展的MPJLambdaQueryWrapper是基于LambdaQueryWrapper扩展的
而LambdaQueryWrapper由于泛型约束,不支持扩展成多表的lambdaWrapper 而LambdaQueryWrapper由于泛型约束,不支持扩展成多表的lambdaWrapper
#### MyJoinLambdaQueryWrapper示例 #### MPJJoinLambdaQueryWrapper示例
#### 简单的3表查询 #### 简单的3表查询
@ -241,7 +240,7 @@ class test {
void testJoin() { void testJoin() {
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class, List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
new MyJoinLambdaQueryWrapper<UserDO>() new MPJJoinLambdaQueryWrapper<UserDO>()
.selectAll(UserDO.class) .selectAll(UserDO.class)
.select(UserAddressDO::getTel) .select(UserAddressDO::getTel)
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress) .selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)
@ -299,7 +298,7 @@ class test {
void testJoin() { void testJoin() {
IPage<UserDTO> iPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class, IPage<UserDTO> iPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class,
new MyJoinLambdaQueryWrapper<UserDO>() new MPJJoinLambdaQueryWrapper<UserDO>()
.selectAll(UserDO.class) .selectAll(UserDO.class)
.select(UserAddressDO::getTel) .select(UserAddressDO::getTel)
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress) .selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)

140
ossrh.xml Normal file
View File

@ -0,0 +1,140 @@
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
<stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>disable-javadoc-doclint</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<properties>
<additionalparam>-Xdoclint:none</additionalparam>
</properties>
</profile>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
<stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>

147
pom.xml
View File

@ -4,8 +4,8 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.github.yulichang</groupId> <groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join</artifactId> <artifactId>mybatis-plus-join</artifactId>
<version>1.0.7-SNAPSHOT</version> <version>1.0.7</version>
<name>mp</name> <name>mybatis-plus-join</name>
<description>An enhanced toolkit of Mybatis-Plus to simplify development.</description> <description>An enhanced toolkit of Mybatis-Plus to simplify development.</description>
<url>https://github.com/yulichang/mybatis-plus-join</url> <url>https://github.com/yulichang/mybatis-plus-join</url>
<licenses> <licenses>
@ -42,147 +42,4 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
<stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>disable-javadoc-doclint</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<properties>
<additionalparam>-Xdoclint:none</additionalparam>
</properties>
</profile>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
<stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
</project> </project>

View File

@ -1,6 +1,6 @@
package com.github.yulichang; package com.github.yulichang;
import com.github.yulichang.injector.MySqlInjector; import com.github.yulichang.injector.MPJSqlInjector;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -12,9 +12,9 @@ import org.springframework.context.annotation.Configuration;
public class MybatisPlusConfiguration { public class MybatisPlusConfiguration {
@Bean @Bean
@ConditionalOnMissingBean(MySqlInjector.class) @ConditionalOnMissingBean(MPJSqlInjector.class)
public MySqlInjector mySqlInjector() { public MPJSqlInjector mySqlInjector() {
return new MySqlInjector(); return new MPJSqlInjector();
} }
} }

View File

@ -3,7 +3,7 @@ package com.github.yulichang.base;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.github.yulichang.interfaces.BaseJoin; import com.github.yulichang.interfaces.MPJBaseJoin;
import com.github.yulichang.toolkit.Constant; import com.github.yulichang.toolkit.Constant;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -14,7 +14,7 @@ import java.util.Map;
* @author yulichang * @author yulichang
* @see BaseMapper * @see BaseMapper
*/ */
public interface MyBaseMapper<T> extends BaseMapper<T> { public interface MPJBaseMapper<T> extends BaseMapper<T> {
/** /**
* 连表查询返回一条记录 * 连表查询返回一条记录
@ -23,14 +23,14 @@ public interface MyBaseMapper<T> extends BaseMapper<T> {
* @param clazz resultType * @param clazz resultType
*/ */
<DTO> DTO selectJoinOne(@Param(Constant.CLAZZ) Class<DTO> clazz, <DTO> DTO selectJoinOne(@Param(Constant.CLAZZ) Class<DTO> clazz,
@Param(Constants.WRAPPER) BaseJoin myWrapper); @Param(Constants.WRAPPER) MPJBaseJoin myWrapper);
/** /**
* 连表查询返回Map * 连表查询返回Map
* *
* @param myWrapper joinWrapper * @param myWrapper joinWrapper
*/ */
Map<String, Object> selectJoinMap(@Param(Constants.WRAPPER) BaseJoin myWrapper); Map<String, Object> selectJoinMap(@Param(Constants.WRAPPER) MPJBaseJoin myWrapper);
/** /**
* 连表查询返回记录集合 * 连表查询返回记录集合
@ -39,14 +39,14 @@ public interface MyBaseMapper<T> extends BaseMapper<T> {
* @param clazz resultType * @param clazz resultType
*/ */
<DTO> List<DTO> selectJoinList(@Param(Constant.CLAZZ) Class<DTO> clazz, <DTO> List<DTO> selectJoinList(@Param(Constant.CLAZZ) Class<DTO> clazz,
@Param(Constants.WRAPPER) BaseJoin myWrapper); @Param(Constants.WRAPPER) MPJBaseJoin myWrapper);
/** /**
* 连表查询返回Map集合 * 连表查询返回Map集合
* *
* @param myWrapper joinWrapper * @param myWrapper joinWrapper
*/ */
List<Map<String, Object>> selectJoinMaps(@Param(Constants.WRAPPER) BaseJoin myWrapper); List<Map<String, Object>> selectJoinMaps(@Param(Constants.WRAPPER) MPJBaseJoin myWrapper);
/** /**
* 连表查询返回记录集合并分页 * 连表查询返回记录集合并分页
@ -57,7 +57,7 @@ public interface MyBaseMapper<T> extends BaseMapper<T> {
*/ */
<DTO, P extends IPage<?>> IPage<DTO> selectJoinPage(P page, <DTO, P extends IPage<?>> IPage<DTO> selectJoinPage(P page,
@Param(Constant.CLAZZ) Class<DTO> clazz, @Param(Constant.CLAZZ) Class<DTO> clazz,
@Param(Constants.WRAPPER) BaseJoin myWrapper); @Param(Constants.WRAPPER) MPJBaseJoin myWrapper);
/** /**
* 连表查询返回Map集合并分页 * 连表查询返回Map集合并分页
@ -65,5 +65,5 @@ public interface MyBaseMapper<T> extends BaseMapper<T> {
* @param myWrapper joinWrapper * @param myWrapper joinWrapper
*/ */
<P extends IPage<?>> IPage<Map<String, Object>> selectJoinMapsPage(P page, <P extends IPage<?>> IPage<Map<String, Object>> selectJoinMapsPage(P page,
@Param(Constants.WRAPPER) BaseJoin myWrapper); @Param(Constants.WRAPPER) MPJBaseJoin myWrapper);
} }

View File

@ -2,7 +2,7 @@ package com.github.yulichang.base;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.interfaces.BaseJoin; import com.github.yulichang.interfaces.MPJBaseJoin;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -11,36 +11,36 @@ import java.util.Map;
* @author yulichang * @author yulichang
* @see IService * @see IService
*/ */
public interface MyBaseService<T> extends IService<T> { public interface MPJBaseService<T> extends IService<T> {
/** /**
* 连接查询返回一条记录 * 连接查询返回一条记录
*/ */
<DTO> DTO selectJoinOne(Class<DTO> clazz, BaseJoin wrapper); <DTO> DTO selectJoinOne(Class<DTO> clazz, MPJBaseJoin wrapper);
/** /**
* 连接查询返回集合 * 连接查询返回集合
*/ */
<DTO> List<DTO> selectJoinList(Class<DTO> clazz, BaseJoin wrapper); <DTO> List<DTO> selectJoinList(Class<DTO> clazz, MPJBaseJoin wrapper);
/** /**
* 连接查询返回集合并分页 * 连接查询返回集合并分页
*/ */
<DTO, P extends IPage<?>> IPage<DTO> selectJoinListPage(P page, Class<DTO> clazz, BaseJoin wrapper); <DTO, P extends IPage<?>> IPage<DTO> selectJoinListPage(P page, Class<DTO> clazz, MPJBaseJoin wrapper);
/** /**
* 连接查询返回Map * 连接查询返回Map
*/ */
Map<String, Object> selectJoinMap(BaseJoin wrapper); Map<String, Object> selectJoinMap(MPJBaseJoin wrapper);
/** /**
* 连接查询返回Map集合 * 连接查询返回Map集合
*/ */
List<Map<String, Object>> selectJoinMaps(BaseJoin wrapper); List<Map<String, Object>> selectJoinMaps(MPJBaseJoin wrapper);
/** /**
* 连接查询返回Map集合并分页 * 连接查询返回Map集合并分页
*/ */
IPage<Map<String, Object>> selectJoinMapsPage(IPage<Map<String, Object>> page, BaseJoin wrapper); IPage<Map<String, Object>> selectJoinMapsPage(IPage<Map<String, Object>> page, MPJBaseJoin wrapper);
} }

View File

@ -2,7 +2,7 @@ package com.github.yulichang.base;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.interfaces.BaseJoin; import com.github.yulichang.interfaces.MPJBaseJoin;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -11,37 +11,37 @@ import java.util.Map;
* @author yulichang * @author yulichang
* @see ServiceImpl * @see ServiceImpl
*/ */
public class MyBaseServiceImpl<M extends MyBaseMapper<T>, T> extends ServiceImpl<M, T> implements MyBaseService<T> { public class MPJBaseServiceImpl<M extends MPJBaseMapper<T>, T> extends ServiceImpl<M, T> implements MPJBaseService<T> {
@Override @Override
public <DTO> DTO selectJoinOne(Class<DTO> clazz, BaseJoin wrapper) { public <DTO> DTO selectJoinOne(Class<DTO> clazz, MPJBaseJoin wrapper) {
return baseMapper.selectJoinOne(clazz, wrapper); return baseMapper.selectJoinOne(clazz, wrapper);
} }
@Override @Override
public <DTO> List<DTO> selectJoinList(Class<DTO> clazz, BaseJoin wrapper) { public <DTO> List<DTO> selectJoinList(Class<DTO> clazz, MPJBaseJoin wrapper) {
return baseMapper.selectJoinList(clazz, wrapper); return baseMapper.selectJoinList(clazz, wrapper);
} }
@Override @Override
public <DTO, P extends IPage<?>> IPage<DTO> selectJoinListPage(P page, Class<DTO> clazz, BaseJoin wrapper) { public <DTO, P extends IPage<?>> IPage<DTO> selectJoinListPage(P page, Class<DTO> clazz, MPJBaseJoin wrapper) {
return baseMapper.selectJoinPage(page, clazz, wrapper); return baseMapper.selectJoinPage(page, clazz, wrapper);
} }
@Override @Override
public Map<String, Object> selectJoinMap(BaseJoin wrapper) { public Map<String, Object> selectJoinMap(MPJBaseJoin wrapper) {
return baseMapper.selectJoinMap(wrapper); return baseMapper.selectJoinMap(wrapper);
} }
@Override @Override
public List<Map<String, Object>> selectJoinMaps(BaseJoin wrapper) { public List<Map<String, Object>> selectJoinMaps(MPJBaseJoin wrapper) {
return baseMapper.selectJoinMaps(wrapper); return baseMapper.selectJoinMaps(wrapper);
} }
@Override @Override
public IPage<Map<String, Object>> selectJoinMapsPage(IPage<Map<String, Object>> page, BaseJoin wrapper) { public IPage<Map<String, Object>> selectJoinMapsPage(IPage<Map<String, Object>> page, MPJBaseJoin wrapper) {
return baseMapper.selectJoinMapsPage(page, wrapper); return baseMapper.selectJoinMapsPage(page, wrapper);
} }

View File

@ -12,7 +12,7 @@ import java.util.List;
* @author yulichang * @author yulichang
* @see DefaultSqlInjector * @see DefaultSqlInjector
*/ */
public class MySqlInjector extends DefaultSqlInjector { public class MPJSqlInjector extends DefaultSqlInjector {
@Override @Override
public List<AbstractMethod> getMethodList(Class<?> mapperClass) { public List<AbstractMethod> getMethodList(Class<?> mapperClass) {

View File

@ -20,7 +20,7 @@ import java.util.Map;
* *
* @author yulichang * @author yulichang
*/ */
public class MyJoinInterceptor implements InnerInterceptor { public class MPJInterceptor implements InnerInterceptor {
private static Field type = null; private static Field type = null;

View File

@ -3,5 +3,5 @@ package com.github.yulichang.interfaces;
/** /**
* @author yulichang * @author yulichang
*/ */
public interface BaseJoin { public interface MPJBaseJoin {
} }

View File

@ -13,7 +13,7 @@ import java.util.List;
* @author yulichang * @author yulichang
* @see AbstractMethod * @see AbstractMethod
*/ */
public abstract class MyAbstractMethod extends AbstractMethod { public abstract class MPJAbstractMethod extends AbstractMethod {
@Override @Override
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) { protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {

View File

@ -7,7 +7,7 @@ import org.apache.ibatis.mapping.SqlSource;
/** /**
* copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps}
*/ */
public class SelectJoinList extends MyAbstractMethod { public class SelectJoinList extends MPJAbstractMethod {
@Override @Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) { public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {

View File

@ -9,7 +9,7 @@ import java.util.Map;
/** /**
* copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps}
*/ */
public class SelectJoinMap extends MyAbstractMethod { public class SelectJoinMap extends MPJAbstractMethod {
@Override @Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) { public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {

View File

@ -9,7 +9,7 @@ import java.util.Map;
/** /**
* copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps}
*/ */
public class SelectJoinMaps extends MyAbstractMethod { public class SelectJoinMaps extends MPJAbstractMethod {
@Override @Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) { public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {

View File

@ -9,7 +9,7 @@ import java.util.Map;
/** /**
* copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps}
*/ */
public class SelectJoinMapsPage extends MyAbstractMethod { public class SelectJoinMapsPage extends MPJAbstractMethod {
@Override @Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) { public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {

View File

@ -7,7 +7,7 @@ import org.apache.ibatis.mapping.SqlSource;
/** /**
* copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps}
*/ */
public class SelectJoinOne extends MyAbstractMethod { public class SelectJoinOne extends MPJAbstractMethod {
@Override @Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) { public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {

View File

@ -7,7 +7,7 @@ import org.apache.ibatis.mapping.SqlSource;
/** /**
* copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps}
*/ */
public class SelectJoinPage extends MyAbstractMethod { public class SelectJoinPage extends MPJAbstractMethod {
@Override @Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) { public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {

View File

@ -19,7 +19,7 @@ import static java.util.stream.Collectors.joining;
* copy {@link com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper} * copy {@link com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper}
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public abstract class MyAbstractLambdaWrapper<T, Children extends MyAbstractLambdaWrapper<T, Children>> public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLambdaWrapper<T, Children>>
extends AbstractWrapper<T, SFunction<T, ?>, Children> { extends AbstractWrapper<T, SFunction<T, ?>, Children> {
private Map<String, ColumnCache> columnMap = null; private Map<String, ColumnCache> columnMap = null;

View File

@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.query.interfaces.MyJoin; import com.github.yulichang.query.interfaces.MPJJoin;
import com.github.yulichang.toolkit.Constant; import com.github.yulichang.toolkit.Constant;
import java.util.ArrayList; import java.util.ArrayList;
@ -28,8 +28,8 @@ import java.util.stream.Collectors;
* sqlSelect 由覆盖改为追加 * sqlSelect 由覆盖改为追加
*/ */
@SuppressWarnings("all") @SuppressWarnings("all")
public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambdaQueryWrapper<T>> public class MPJLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaQueryWrapper<T>>
implements Query<MyLambdaQueryWrapper<T>, T, SFunction<T, ?>>, MyJoin<MyLambdaQueryWrapper<T>> { implements Query<MPJLambdaQueryWrapper<T>, T, SFunction<T, ?>>, MPJJoin<MPJLambdaQueryWrapper<T>> {
/** /**
* 查询字段 * 查询字段
@ -50,14 +50,14 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
/** /**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity) * 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/ */
public MyLambdaQueryWrapper() { public MPJLambdaQueryWrapper() {
this((T) null); this((T) null);
} }
/** /**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity) * 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/ */
public MyLambdaQueryWrapper(T entity) { public MPJLambdaQueryWrapper(T entity) {
super.setEntity(entity); super.setEntity(entity);
super.initNeed(); super.initNeed();
} }
@ -65,7 +65,7 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
/** /**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity) * 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/ */
public MyLambdaQueryWrapper(Class<T> entityClass) { public MPJLambdaQueryWrapper(Class<T> entityClass) {
super.setEntityClass(entityClass); super.setEntityClass(entityClass);
super.initNeed(); super.initNeed();
} }
@ -73,9 +73,9 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
/** /**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(...) * 不建议直接 new 该实例使用 Wrappers.lambdaQuery(...)
*/ */
MyLambdaQueryWrapper(T entity, Class<T> entityClass, SharedString from, SharedString sqlSelect, AtomicInteger paramNameSeq, MPJLambdaQueryWrapper(T entity, Class<T> entityClass, SharedString from, SharedString sqlSelect, AtomicInteger paramNameSeq,
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments, Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) { SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
super.setEntity(entity); super.setEntity(entity);
super.setEntityClass(entityClass); super.setEntityClass(entityClass);
this.paramNameSeq = paramNameSeq; this.paramNameSeq = paramNameSeq;
@ -95,12 +95,12 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
*/ */
@SafeVarargs @SafeVarargs
@Override @Override
public final MyLambdaQueryWrapper<T> select(SFunction<T, ?>... columns) { public final MPJLambdaQueryWrapper<T> select(SFunction<T, ?>... columns) {
return select(true, columns); return select(true, columns);
} }
@SafeVarargs @SafeVarargs
public final MyLambdaQueryWrapper<T> select(boolean condition, SFunction<T, ?>... columns) { public final MPJLambdaQueryWrapper<T> select(boolean condition, SFunction<T, ?>... columns) {
if (condition && ArrayUtils.isNotEmpty(columns)) { if (condition && ArrayUtils.isNotEmpty(columns)) {
String s = columnsToString(false, columns); String s = columnsToString(false, columns);
if (StringUtils.isBlank(sqlSelect.getStringValue())) { if (StringUtils.isBlank(sqlSelect.getStringValue())) {
@ -113,12 +113,12 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
} }
@SafeVarargs @SafeVarargs
public final MyLambdaQueryWrapper<T> select(String... columns) { public final MPJLambdaQueryWrapper<T> select(String... columns) {
return select(true, columns); return select(true, columns);
} }
@SafeVarargs @SafeVarargs
public final MyLambdaQueryWrapper<T> select(boolean condition, String... columns) { public final MPJLambdaQueryWrapper<T> select(boolean condition, String... columns) {
if (condition && ArrayUtils.isNotEmpty(columns)) { if (condition && ArrayUtils.isNotEmpty(columns)) {
String s = String.join(StringPool.COMMA, columns); String s = String.join(StringPool.COMMA, columns);
if (StringUtils.isBlank(sqlSelect.getStringValue())) { if (StringUtils.isBlank(sqlSelect.getStringValue())) {
@ -142,11 +142,11 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
* @return this * @return this
*/ */
@Override @Override
public MyLambdaQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) { public MPJLambdaQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
return select(true, entityClass, predicate); return select(true, entityClass, predicate);
} }
public MyLambdaQueryWrapper<T> select(boolean condition, Class<T> entityClass, Predicate<TableFieldInfo> predicate) { public MPJLambdaQueryWrapper<T> select(boolean condition, Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
if (condition) { if (condition) {
if (entityClass == null) { if (entityClass == null) {
entityClass = getEntityClass(); entityClass = getEntityClass();
@ -166,11 +166,11 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
return typedThis; return typedThis;
} }
public final MyLambdaQueryWrapper<T> selectAll(Class<T> clazz) { public final MPJLambdaQueryWrapper<T> selectAll(Class<T> clazz) {
return selectAll(true, clazz); return selectAll(true, clazz);
} }
public final MyLambdaQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) { public final MPJLambdaQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) {
if (condition) { if (condition) {
TableInfo info = TableInfoHelper.getTableInfo(clazz); TableInfo info = TableInfoHelper.getTableInfo(clazz);
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
@ -191,8 +191,8 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
/** /**
* 返回一个支持 lambda 函数写法的 wrapper * 返回一个支持 lambda 函数写法的 wrapper
*/ */
public MyQueryWrapper<T> stringQuery() { public MPJQueryWrapper<T> stringQuery() {
return new MyQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs,
expression, sqlSelect, from, lastSql, sqlComment, sqlFirst); expression, sqlSelect, from, lastSql, sqlComment, sqlFirst);
} }
@ -215,8 +215,8 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
* <p> sqlSelect from不向下传递</p> * <p> sqlSelect from不向下传递</p>
*/ */
@Override @Override
protected MyLambdaQueryWrapper<T> instance() { protected MPJLambdaQueryWrapper<T> instance() {
return new MyLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs, return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString()); new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
} }
@ -227,7 +227,7 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
} }
@Override @Override
public MyLambdaQueryWrapper<T> join(String keyWord, boolean condition, String joinSql) { public MPJLambdaQueryWrapper<T> join(String keyWord, boolean condition, String joinSql) {
if (condition) { if (condition) {
from.setStringValue(from.getStringValue() + keyWord + joinSql); from.setStringValue(from.getStringValue() + keyWord + joinSql);
} }

View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.github.yulichang.query.interfaces.MyJoin; import com.github.yulichang.query.interfaces.MPJJoin;
import com.github.yulichang.toolkit.Constant; import com.github.yulichang.toolkit.Constant;
import java.util.ArrayList; import java.util.ArrayList;
@ -24,8 +24,8 @@ import java.util.stream.Collectors;
* copy {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} * copy {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper<T>> public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapper<T>>
implements Query<MyQueryWrapper<T>, T, String>, MyJoin<MyQueryWrapper<T>> { implements Query<MPJQueryWrapper<T>, T, String>, MPJJoin<MPJQueryWrapper<T>> {
/** /**
* 查询字段 * 查询字段
@ -43,16 +43,16 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
private final SharedString alias = new SharedString(Constant.TABLE_ALIAS); private final SharedString alias = new SharedString(Constant.TABLE_ALIAS);
public MyQueryWrapper() { public MPJQueryWrapper() {
this(null); this(null);
} }
public MyQueryWrapper(T entity) { public MPJQueryWrapper(T entity) {
super.setEntity(entity); super.setEntity(entity);
super.initNeed(); super.initNeed();
} }
public MyQueryWrapper(T entity, String... columns) { public MPJQueryWrapper(T entity, String... columns) {
super.setEntity(entity); super.setEntity(entity);
super.initNeed(); super.initNeed();
this.select(columns); this.select(columns);
@ -63,9 +63,9 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
* *
* @param entityClass 本不应该需要的 * @param entityClass 本不应该需要的
*/ */
public MyQueryWrapper(T entity, Class<T> entityClass, AtomicInteger paramNameSeq, public MPJQueryWrapper(T entity, Class<T> entityClass, AtomicInteger paramNameSeq,
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments, Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
SharedString sqlSelect, SharedString from, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) { SharedString sqlSelect, SharedString from, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
super.setEntity(entity); super.setEntity(entity);
super.setEntityClass(entityClass); super.setEntityClass(entityClass);
this.paramNameSeq = paramNameSeq; this.paramNameSeq = paramNameSeq;
@ -79,11 +79,11 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
} }
@Override @Override
public MyQueryWrapper<T> select(String... columns) { public MPJQueryWrapper<T> select(String... columns) {
return select(true, columns); return select(true, columns);
} }
public MyQueryWrapper<T> select(boolean condition, String... columns) { public MPJQueryWrapper<T> select(boolean condition, String... columns) {
if (condition) { if (condition) {
if (ArrayUtils.isNotEmpty(columns)) { if (ArrayUtils.isNotEmpty(columns)) {
this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns)); this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns));
@ -93,11 +93,11 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
} }
@Override @Override
public MyQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) { public MPJQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
return select(true, entityClass, predicate); return select(true, entityClass, predicate);
} }
public MyQueryWrapper<T> select(boolean condition, Class<T> entityClass, Predicate<TableFieldInfo> predicate) { public MPJQueryWrapper<T> select(boolean condition, Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
if (condition) { if (condition) {
super.setEntityClass(entityClass); super.setEntityClass(entityClass);
this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate)); this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate));
@ -106,11 +106,11 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
} }
public final MyQueryWrapper<T> selectAll(Class<T> clazz) { public final MPJQueryWrapper<T> selectAll(Class<T> clazz) {
return selectAll(true, clazz); return selectAll(true, clazz);
} }
public final MyQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) { public final MPJQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) {
if (condition) { if (condition) {
TableInfo info = TableInfoHelper.getTableInfo(clazz); TableInfo info = TableInfoHelper.getTableInfo(clazz);
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
@ -145,8 +145,8 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
/** /**
* 返回一个支持 lambda 函数写法的 wrapper * 返回一个支持 lambda 函数写法的 wrapper
*/ */
public MyLambdaQueryWrapper<T> lambda() { public MPJLambdaQueryWrapper<T> lambda() {
return new MyLambdaQueryWrapper<>(getEntity(), getEntityClass(), from, sqlSelect, paramNameSeq, paramNameValuePairs, return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), from, sqlSelect, paramNameSeq, paramNameValuePairs,
expression, lastSql, sqlComment, sqlFirst); expression, lastSql, sqlComment, sqlFirst);
} }
@ -157,8 +157,8 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
* </p> * </p>
*/ */
@Override @Override
protected MyQueryWrapper<T> instance() { protected MPJQueryWrapper<T> instance() {
return new MyQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(), return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(),
null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString()); null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
} }
@ -169,7 +169,7 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
} }
@Override @Override
public MyQueryWrapper<T> join(String keyWord, boolean condition, String joinSql) { public MPJQueryWrapper<T> join(String keyWord, boolean condition, String joinSql) {
if (condition) { if (condition) {
from.setStringValue(from.getStringValue() + keyWord + joinSql); from.setStringValue(from.getStringValue() + keyWord + joinSql);
} }

View File

@ -1,12 +1,12 @@
package com.github.yulichang.query.interfaces; package com.github.yulichang.query.interfaces;
import com.github.yulichang.interfaces.BaseJoin; import com.github.yulichang.interfaces.MPJBaseJoin;
import com.github.yulichang.toolkit.Constant; import com.github.yulichang.toolkit.Constant;
/** /**
* @author yulichang * @author yulichang
*/ */
public interface MyJoin<Children> extends BaseJoin { public interface MPJJoin<Children> extends MPJBaseJoin {
default Children leftJoin(String joinSql) { default Children leftJoin(String joinSql) {
return leftJoin(true, joinSql); return leftJoin(true, joinSql);

View File

@ -0,0 +1,28 @@
package com.github.yulichang.toolkit;
import org.springframework.beans.BeansException;
/**
* 用于简化lambda中对象属性拷贝操作
*
* @author yulichang
* @see org.springframework.beans.BeanUtils
*/
public class BeanUtils {
public static <T> T copyProperties(Object source, T target) throws BeansException {
org.springframework.beans.BeanUtils.copyProperties(source, target);
return target;
}
public static <T> T copyProperties(Object source, T target, Class<?> editable) throws BeansException {
org.springframework.beans.BeanUtils.copyProperties(source, target, editable);
return target;
}
public static <T> T copyProperties(Object source, T target, String... ignoreProperties) throws BeansException {
org.springframework.beans.BeanUtils.copyProperties(source, target, ignoreProperties);
return target;
}
}

View File

@ -1,7 +1,6 @@
package com.github.yulichang.toolkit; package com.github.yulichang.toolkit;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda; import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
@ -12,17 +11,17 @@ import java.util.Objects;
/** /**
* @author yulichang * @author yulichang
* @see LambdaUtils * @see com.baomidou.mybatisplus.core.toolkit.LambdaUtils
* @see PropertyNamer * @see PropertyNamer
*/ */
public final class MyLambdaUtils { public final class LambdaUtils {
/** /**
* 获取lambda属性名 UserDO::getId -> id * 获取lambda属性名
*/ */
public static <T> String getName(SFunction<T, ?> fn) { public static <T> String getName(SFunction<T, ?> fn) {
return PropertyNamer.methodToProperty(LambdaUtils.resolve(fn).getImplMethodName()); return PropertyNamer.methodToProperty(com.baomidou.mybatisplus.core.toolkit.LambdaUtils.resolve(fn).getImplMethodName());
} }
/** /**
@ -31,7 +30,7 @@ public final class MyLambdaUtils {
*/ */
public static <T> String getColumn(SFunction<T, ?> fn) { public static <T> String getColumn(SFunction<T, ?> fn) {
SerializedLambda lambda = LambdaUtils.resolve(fn); SerializedLambda lambda = com.baomidou.mybatisplus.core.toolkit.LambdaUtils.resolve(fn);
String fieldName = PropertyNamer.methodToProperty(lambda.getImplMethodName()); String fieldName = PropertyNamer.methodToProperty(lambda.getImplMethodName());
try { try {
Field field = lambda.getImplClass().getDeclaredField(fieldName); Field field = lambda.getImplClass().getDeclaredField(fieldName);
@ -46,6 +45,6 @@ public final class MyLambdaUtils {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> Class<T> getEntityClass(SFunction<T, ?> fn) { public static <T> Class<T> getEntityClass(SFunction<T, ?> fn) {
return (Class<T>) LambdaUtils.resolve(fn).getInstantiatedType(); return (Class<T>) com.baomidou.mybatisplus.core.toolkit.LambdaUtils.resolve(fn).getInstantiatedType();
} }
} }

View File

@ -0,0 +1,80 @@
package com.github.yulichang.toolkit;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import java.util.List;
import java.util.Objects;
import java.util.function.BiConsumer;
import java.util.function.BiPredicate;
/**
* 程序连表工具类
* 通常用于将两个单表查询的结果合并
*
* @author yulichang
*/
public class ListJoinUtils {
/**
* example:
* <pre>
* leftJoin(left,right,(l,r) ->{
* if(l.getId.equals(r.getLeftId())){
* l.setXXX(r.getXXX());
* ....
* }
* });
* </pre>
*
* @param left 主表list
* @param right 附表list
* @param consumer 执行内容
*/
public static <L, R> void leftJoin(List<L> left, List<R> right, BiConsumer<L, R> consumer) {
if (CollectionUtils.isNotEmpty(left) && CollectionUtils.isNotEmpty(right)) {
for (L l : left) {
if (Objects.nonNull(l)) {
for (R r : right) {
if (Objects.nonNull(r)) {
consumer.accept(l, r);
}
}
}
}
}
}
/**
* example:
* <pre>
* leftJoin(left, right,
* (l, r) -> l.getId.equals(r.getLeftId()),
* (l, r) -> {
* l.setXXX(r.getXXX());
* ....
* }
* );
* </pre>
*
* @param left 主表list
* @param right 附表list
* @param predicate 条件
* @param consumer 执行内容
*/
public static <L, R> void leftJoin(List<L> left, List<R> right, BiPredicate<L, R> predicate, BiConsumer<L, R> consumer) {
if (CollectionUtils.isNotEmpty(left) && CollectionUtils.isNotEmpty(right)) {
for (L l : left) {
if (Objects.nonNull(l)) {
for (R r : right) {
if (Objects.nonNull(r)) {
if (predicate.test(l, r)) {
consumer.accept(l, r);
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,30 @@
package com.github.yulichang.toolkit;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author yulichang
*/
public class StreamUtils {
public static <T, R> List<R> toList(List<T> list, Function<T, R> func) {
if (CollectionUtils.isNotEmpty(list)) {
return list.stream().map(func).collect(Collectors.toList());
}
return new ArrayList<>();
}
public static <T, R> Set<R> toSet(List<T> list, Function<T, R> func) {
if (CollectionUtils.isNotEmpty(list)) {
return list.stream().map(func).collect(Collectors.toSet());
}
return new HashSet<>();
}
}

View File

@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache; import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.toolkit.Constant; import com.github.yulichang.toolkit.Constant;
import com.github.yulichang.toolkit.MyLambdaUtils; import com.github.yulichang.toolkit.LambdaUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
@ -17,8 +17,8 @@ import static java.util.stream.Collectors.joining;
* copy {@link com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper} * copy {@link com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper}
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public abstract class MyAbstractLambdaWrapper<T, Children extends MyAbstractLambdaWrapper<T, Children>> public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLambdaWrapper<T, Children>>
extends MyAbstractWrapper<T, Children> { extends MPJAbstractWrapper<T, Children> {
private Map<String, ColumnCache> columnMap = null; private Map<String, ColumnCache> columnMap = null;
private boolean initColumnMap = false; private boolean initColumnMap = false;
@ -49,8 +49,8 @@ public abstract class MyAbstractLambdaWrapper<T, Children extends MyAbstractLamb
} }
protected String columnToString(SFunction<?, ?> column, boolean onlyColumn) { protected String columnToString(SFunction<?, ?> column, boolean onlyColumn) {
return Constant.TABLE_ALIAS + getDefault(subTable.get(MyLambdaUtils.getEntityClass(column))) + StringPool.DOT + return Constant.TABLE_ALIAS + getDefault(subTable.get(LambdaUtils.getEntityClass(column))) + StringPool.DOT +
MyLambdaUtils.getColumn(column); LambdaUtils.getColumn(column);
} }
protected String getDefault(Integer i) { protected String getDefault(Integer i) {

View File

@ -12,8 +12,8 @@ import com.baomidou.mybatisplus.core.toolkit.*;
import com.baomidou.mybatisplus.core.toolkit.sql.SqlUtils; import com.baomidou.mybatisplus.core.toolkit.sql.SqlUtils;
import com.baomidou.mybatisplus.core.toolkit.sql.StringEscape; import com.baomidou.mybatisplus.core.toolkit.sql.StringEscape;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.wrapper.interfaces.MyCompare; import com.github.yulichang.wrapper.interfaces.Compare;
import com.github.yulichang.wrapper.interfaces.MyFunc; import com.github.yulichang.wrapper.interfaces.Func;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
@ -31,8 +31,8 @@ import static java.util.stream.Collectors.joining;
* copy {@link com.baomidou.mybatisplus.core.conditions.AbstractWrapper} * copy {@link com.baomidou.mybatisplus.core.conditions.AbstractWrapper}
*/ */
@SuppressWarnings({"serial", "unchecked"}) @SuppressWarnings({"serial", "unchecked"})
public abstract class MyAbstractWrapper<T, Children extends MyAbstractWrapper<T, Children>> extends Wrapper<T> public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<T, Children>> extends Wrapper<T>
implements MyCompare<Children>, Nested<Children, Children>, Join<Children>, MyFunc<Children> { implements Compare<Children>, Nested<Children, Children>, Join<Children>, Func<Children> {
/** /**
* 占位符 * 占位符

View File

@ -11,9 +11,9 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.toolkit.Constant; import com.github.yulichang.toolkit.Constant;
import com.github.yulichang.toolkit.MyLambdaUtils; import com.github.yulichang.toolkit.LambdaUtils;
import com.github.yulichang.wrapper.interfaces.MyLambdaJoin; import com.github.yulichang.wrapper.interfaces.LambdaJoin;
import com.github.yulichang.wrapper.interfaces.MySFunctionQuery; import com.github.yulichang.wrapper.interfaces.SFunctionQuery;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -26,8 +26,8 @@ import java.util.stream.Collectors;
* copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper} * copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper}
*/ */
@SuppressWarnings("all") @SuppressWarnings("all")
public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJoinLambdaQueryWrapper<T>> public class MPJJoinLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJJoinLambdaQueryWrapper<T>>
implements MySFunctionQuery<MyJoinLambdaQueryWrapper<T>>, MyLambdaJoin<MyJoinLambdaQueryWrapper<T>> { implements SFunctionQuery<MPJJoinLambdaQueryWrapper<T>>, LambdaJoin<MPJJoinLambdaQueryWrapper<T>> {
/** /**
* 查询字段 sql * 查询字段 sql
@ -57,14 +57,14 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
/** /**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity) * 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/ */
public MyJoinLambdaQueryWrapper() { public MPJJoinLambdaQueryWrapper() {
this((T) null); this((T) null);
} }
/** /**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity) * 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/ */
public MyJoinLambdaQueryWrapper(T entity) { public MPJJoinLambdaQueryWrapper(T entity) {
super.setEntity(entity); super.setEntity(entity);
super.initNeed(); super.initNeed();
} }
@ -72,7 +72,7 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
/** /**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity) * 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/ */
public MyJoinLambdaQueryWrapper(Class<T> entityClass) { public MPJJoinLambdaQueryWrapper(Class<T> entityClass) {
super.setEntityClass(entityClass); super.setEntityClass(entityClass);
super.initNeed(); super.initNeed();
} }
@ -80,9 +80,9 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
/** /**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(...) * 不建议直接 new 该实例使用 Wrappers.lambdaQuery(...)
*/ */
MyJoinLambdaQueryWrapper(T entity, Class<T> entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq, MPJJoinLambdaQueryWrapper(T entity, Class<T> entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq,
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments, Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) { SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
super.setEntity(entity); super.setEntity(entity);
super.setEntityClass(entityClass); super.setEntityClass(entityClass);
this.paramNameSeq = paramNameSeq; this.paramNameSeq = paramNameSeq;
@ -100,26 +100,26 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
* @param columns 查询字段 * @param columns 查询字段
*/ */
@SafeVarargs @SafeVarargs
public final <S> MyJoinLambdaQueryWrapper<T> select(SFunction<S, ?>... columns) { public final <S> MPJJoinLambdaQueryWrapper<T> select(SFunction<S, ?>... columns) {
return select(true, columns); return select(true, columns);
} }
@SafeVarargs @SafeVarargs
public final <S> MyJoinLambdaQueryWrapper<T> select(boolean condition, SFunction<S, ?>... columns) { public final <S> MPJJoinLambdaQueryWrapper<T> select(boolean condition, SFunction<S, ?>... columns) {
if (condition && ArrayUtils.isNotEmpty(columns)) { if (condition && ArrayUtils.isNotEmpty(columns)) {
for (SFunction<S, ?> s : columns) { for (SFunction<S, ?> s : columns) {
selectColumns.add(new SelectColumn(MyLambdaUtils.getEntityClass(s), MyLambdaUtils.getColumn(s), null)); selectColumns.add(new SelectColumn(LambdaUtils.getEntityClass(s), LambdaUtils.getColumn(s), null));
} }
} }
return typedThis; return typedThis;
} }
@Override @Override
public <E> MyJoinLambdaQueryWrapper<T> select(Class<E> entityClass, Predicate<TableFieldInfo> predicate) { public <E> MPJJoinLambdaQueryWrapper<T> select(Class<E> entityClass, Predicate<TableFieldInfo> predicate) {
return select(true, entityClass, predicate); return select(true, entityClass, predicate);
} }
public <E> MyJoinLambdaQueryWrapper<T> select(boolean condition, Class<E> entityClass, Predicate<TableFieldInfo> predicate) { public <E> MPJJoinLambdaQueryWrapper<T> select(boolean condition, Class<E> entityClass, Predicate<TableFieldInfo> predicate) {
if (condition) { if (condition) {
TableInfo info = TableInfoHelper.getTableInfo(entityClass); TableInfo info = TableInfoHelper.getTableInfo(entityClass);
Assert.notNull(info, "table can not be find"); Assert.notNull(info, "table can not be find");
@ -130,22 +130,22 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
} }
public final <S, X> MyJoinLambdaQueryWrapper<T> selectAs(SFunction<S, ?> columns, SFunction<X, ?> alias) { public final <S, X> MPJJoinLambdaQueryWrapper<T> selectAs(SFunction<S, ?> columns, SFunction<X, ?> alias) {
return selectAs(true, columns, alias); return selectAs(true, columns, alias);
} }
public final <S, X> MyJoinLambdaQueryWrapper<T> selectAs(boolean condition, SFunction<S, ?> columns, SFunction<X, ?> alias) { public final <S, X> MPJJoinLambdaQueryWrapper<T> selectAs(boolean condition, SFunction<S, ?> columns, SFunction<X, ?> alias) {
if (condition) { if (condition) {
selectColumns.add(new SelectColumn(MyLambdaUtils.getEntityClass(columns), MyLambdaUtils.getColumn(columns), MyLambdaUtils.getName(alias))); selectColumns.add(new SelectColumn(LambdaUtils.getEntityClass(columns), LambdaUtils.getColumn(columns), LambdaUtils.getName(alias)));
} }
return typedThis; return typedThis;
} }
public final MyJoinLambdaQueryWrapper<T> selectAll(Class<?> clazz) { public final MPJJoinLambdaQueryWrapper<T> selectAll(Class<?> clazz) {
return selectAll(true, clazz); return selectAll(true, clazz);
} }
public final MyJoinLambdaQueryWrapper<T> selectAll(boolean condition, Class<?> clazz) { public final MPJJoinLambdaQueryWrapper<T> selectAll(boolean condition, Class<?> clazz) {
if (condition) { if (condition) {
TableInfo info = TableInfoHelper.getTableInfo(clazz); TableInfo info = TableInfoHelper.getTableInfo(clazz);
Assert.notNull(info, "table can not be find -> %s", clazz); Assert.notNull(info, "table can not be find -> %s", clazz);
@ -185,8 +185,8 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
* <p> sqlSelect 不向下传递</p> * <p> sqlSelect 不向下传递</p>
*/ */
@Override @Override
protected MyJoinLambdaQueryWrapper<T> instance() { protected MPJJoinLambdaQueryWrapper<T> instance() {
return new MyJoinLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs, return new MPJJoinLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString()); new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
} }
@ -197,7 +197,7 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
} }
@Override @Override
public <L, X> MyJoinLambdaQueryWrapper<T> join(String keyWord, boolean condition, Class<L> clazz, SFunction<L, ?> left, SFunction<X, ?> right) { public <L, X> MPJJoinLambdaQueryWrapper<T> join(String keyWord, boolean condition, Class<L> clazz, SFunction<L, ?> left, SFunction<X, ?> right) {
if (condition) { if (condition) {
subTable.put(clazz, tableIndex); subTable.put(clazz, tableIndex);
TableInfo leftInfo = TableInfoHelper.getTableInfo(clazz); TableInfo leftInfo = TableInfoHelper.getTableInfo(clazz);
@ -212,12 +212,12 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
.append(Constant.TABLE_ALIAS) .append(Constant.TABLE_ALIAS)
.append(tableIndex) .append(tableIndex)
.append(StringPool.DOT) .append(StringPool.DOT)
.append(MyLambdaUtils.getColumn(left)) .append(LambdaUtils.getColumn(left))
.append(Constant.EQUALS) .append(Constant.EQUALS)
.append(Constant.TABLE_ALIAS) .append(Constant.TABLE_ALIAS)
.append(getDefault(subTable.get(MyLambdaUtils.getEntityClass(right)))) .append(getDefault(subTable.get(LambdaUtils.getEntityClass(right))))
.append(StringPool.DOT) .append(StringPool.DOT)
.append(MyLambdaUtils.getColumn(right)); .append(LambdaUtils.getColumn(right));
tableIndex++; tableIndex++;
if (StringUtils.isBlank(from.getStringValue())) { if (StringUtils.isBlank(from.getStringValue())) {

View File

@ -9,7 +9,7 @@ import java.util.function.BiPredicate;
/** /**
* {@link com.baomidou.mybatisplus.core.conditions.interfaces.Compare} * {@link com.baomidou.mybatisplus.core.conditions.interfaces.Compare}
*/ */
public interface MyCompare<Children> extends Serializable { public interface Compare<Children> extends Serializable {
/** /**
* ignore * ignore

View File

@ -14,7 +14,7 @@ import static java.util.stream.Collectors.toList;
* copy {@link com.baomidou.mybatisplus.core.conditions.interfaces.Func} * copy {@link com.baomidou.mybatisplus.core.conditions.interfaces.Func}
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public interface MyFunc<Children> extends Serializable { public interface Func<Children> extends Serializable {
/** /**
* ignore * ignore

View File

@ -1,13 +1,13 @@
package com.github.yulichang.wrapper.interfaces; package com.github.yulichang.wrapper.interfaces;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.interfaces.BaseJoin; import com.github.yulichang.interfaces.MPJBaseJoin;
import com.github.yulichang.toolkit.Constant; import com.github.yulichang.toolkit.Constant;
/** /**
* @author yulichang * @author yulichang
*/ */
public interface MyLambdaJoin<Children> extends BaseJoin { public interface LambdaJoin<Children> extends MPJBaseJoin {
default <T, X> Children leftJoin(Class<T> clazz, SFunction<T, ?> left, SFunction<X, ?> right) { default <T, X> Children leftJoin(Class<T> clazz, SFunction<T, ?> left, SFunction<X, ?> right) {
return leftJoin(true, clazz, left, right); return leftJoin(true, clazz, left, right);

View File

@ -9,7 +9,7 @@ import java.util.function.Predicate;
/** /**
* copy {@link com.baomidou.mybatisplus.core.conditions.query.Query} * copy {@link com.baomidou.mybatisplus.core.conditions.query.Query}
*/ */
public interface MySFunctionQuery<Children> extends Serializable { public interface SFunctionQuery<Children> extends Serializable {
/** /**
* 设置查询字段 * 设置查询字段