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

View File

@ -1,6 +1,6 @@
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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -12,9 +12,9 @@ import org.springframework.context.annotation.Configuration;
public class MybatisPlusConfiguration {
@Bean
@ConditionalOnMissingBean(MySqlInjector.class)
public MySqlInjector mySqlInjector() {
return new MySqlInjector();
@ConditionalOnMissingBean(MPJSqlInjector.class)
public MPJSqlInjector 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.metadata.IPage;
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 org.apache.ibatis.annotations.Param;
@ -14,7 +14,7 @@ import java.util.Map;
* @author yulichang
* @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
*/
<DTO> DTO selectJoinOne(@Param(Constant.CLAZZ) Class<DTO> clazz,
@Param(Constants.WRAPPER) BaseJoin myWrapper);
@Param(Constants.WRAPPER) MPJBaseJoin myWrapper);
/**
* 连表查询返回Map
*
* @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
*/
<DTO> List<DTO> selectJoinList(@Param(Constant.CLAZZ) Class<DTO> clazz,
@Param(Constants.WRAPPER) BaseJoin myWrapper);
@Param(Constants.WRAPPER) MPJBaseJoin myWrapper);
/**
* 连表查询返回Map集合
*
* @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,
@Param(Constant.CLAZZ) Class<DTO> clazz,
@Param(Constants.WRAPPER) BaseJoin myWrapper);
@Param(Constants.WRAPPER) MPJBaseJoin myWrapper);
/**
* 连表查询返回Map集合并分页
@ -65,5 +65,5 @@ public interface MyBaseMapper<T> extends BaseMapper<T> {
* @param myWrapper joinWrapper
*/
<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.extension.service.IService;
import com.github.yulichang.interfaces.BaseJoin;
import com.github.yulichang.interfaces.MPJBaseJoin;
import java.util.List;
import java.util.Map;
@ -11,36 +11,36 @@ import java.util.Map;
* @author yulichang
* @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<String, Object> selectJoinMap(BaseJoin wrapper);
Map<String, Object> selectJoinMap(MPJBaseJoin wrapper);
/**
* 连接查询返回Map集合
*/
List<Map<String, Object>> selectJoinMaps(BaseJoin wrapper);
List<Map<String, Object>> selectJoinMaps(MPJBaseJoin wrapper);
/**
* 连接查询返回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.extension.service.impl.ServiceImpl;
import com.github.yulichang.interfaces.BaseJoin;
import com.github.yulichang.interfaces.MPJBaseJoin;
import java.util.List;
import java.util.Map;
@ -11,37 +11,37 @@ import java.util.Map;
* @author yulichang
* @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
public <DTO> DTO selectJoinOne(Class<DTO> clazz, BaseJoin wrapper) {
public <DTO> DTO selectJoinOne(Class<DTO> clazz, MPJBaseJoin wrapper) {
return baseMapper.selectJoinOne(clazz, wrapper);
}
@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);
}
@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);
}
@Override
public Map<String, Object> selectJoinMap(BaseJoin wrapper) {
public Map<String, Object> selectJoinMap(MPJBaseJoin wrapper) {
return baseMapper.selectJoinMap(wrapper);
}
@Override
public List<Map<String, Object>> selectJoinMaps(BaseJoin wrapper) {
public List<Map<String, Object>> selectJoinMaps(MPJBaseJoin wrapper) {
return baseMapper.selectJoinMaps(wrapper);
}
@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);
}

View File

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

View File

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

View File

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

View File

@ -13,7 +13,7 @@ import java.util.List;
* @author yulichang
* @see AbstractMethod
*/
public abstract class MyAbstractMethod extends AbstractMethod {
public abstract class MPJAbstractMethod extends AbstractMethod {
@Override
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}
*/
public class SelectJoinList extends MyAbstractMethod {
public class SelectJoinList extends MPJAbstractMethod {
@Override
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}
*/
public class SelectJoinMap extends MyAbstractMethod {
public class SelectJoinMap extends MPJAbstractMethod {
@Override
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}
*/
public class SelectJoinMaps extends MyAbstractMethod {
public class SelectJoinMaps extends MPJAbstractMethod {
@Override
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}
*/
public class SelectJoinMapsPage extends MyAbstractMethod {
public class SelectJoinMapsPage extends MPJAbstractMethod {
@Override
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}
*/
public class SelectJoinOne extends MyAbstractMethod {
public class SelectJoinOne extends MPJAbstractMethod {
@Override
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}
*/
public class SelectJoinPage extends MyAbstractMethod {
public class SelectJoinPage extends MPJAbstractMethod {
@Override
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}
*/
@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> {
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.StringUtils;
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 java.util.ArrayList;
@ -28,8 +28,8 @@ import java.util.stream.Collectors;
* sqlSelect 由覆盖改为追加
*/
@SuppressWarnings("all")
public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambdaQueryWrapper<T>>
implements Query<MyLambdaQueryWrapper<T>, T, SFunction<T, ?>>, MyJoin<MyLambdaQueryWrapper<T>> {
public class MPJLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaQueryWrapper<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)
*/
public MyLambdaQueryWrapper() {
public MPJLambdaQueryWrapper() {
this((T) null);
}
/**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/
public MyLambdaQueryWrapper(T entity) {
public MPJLambdaQueryWrapper(T entity) {
super.setEntity(entity);
super.initNeed();
}
@ -65,7 +65,7 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
/**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/
public MyLambdaQueryWrapper(Class<T> entityClass) {
public MPJLambdaQueryWrapper(Class<T> entityClass) {
super.setEntityClass(entityClass);
super.initNeed();
}
@ -73,7 +73,7 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
/**
* 不建议直接 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,
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
super.setEntity(entity);
@ -95,12 +95,12 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
*/
@SafeVarargs
@Override
public final MyLambdaQueryWrapper<T> select(SFunction<T, ?>... columns) {
public final MPJLambdaQueryWrapper<T> select(SFunction<T, ?>... columns) {
return select(true, columns);
}
@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)) {
String s = columnsToString(false, columns);
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
@ -113,12 +113,12 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
}
@SafeVarargs
public final MyLambdaQueryWrapper<T> select(String... columns) {
public final MPJLambdaQueryWrapper<T> select(String... columns) {
return select(true, columns);
}
@SafeVarargs
public final MyLambdaQueryWrapper<T> select(boolean condition, String... columns) {
public final MPJLambdaQueryWrapper<T> select(boolean condition, String... columns) {
if (condition && ArrayUtils.isNotEmpty(columns)) {
String s = String.join(StringPool.COMMA, columns);
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
@ -142,11 +142,11 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
* @return this
*/
@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);
}
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 (entityClass == null) {
entityClass = getEntityClass();
@ -166,11 +166,11 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
return typedThis;
}
public final MyLambdaQueryWrapper<T> selectAll(Class<T> clazz) {
public final MPJLambdaQueryWrapper<T> selectAll(Class<T> 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) {
TableInfo info = TableInfoHelper.getTableInfo(clazz);
List<String> list = new ArrayList<>();
@ -191,8 +191,8 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
/**
* 返回一个支持 lambda 函数写法的 wrapper
*/
public MyQueryWrapper<T> stringQuery() {
return new MyQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs,
public MPJQueryWrapper<T> stringQuery() {
return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs,
expression, sqlSelect, from, lastSql, sqlComment, sqlFirst);
}
@ -215,8 +215,8 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
* <p> sqlSelect from不向下传递</p>
*/
@Override
protected MyLambdaQueryWrapper<T> instance() {
return new MyLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs,
protected MPJLambdaQueryWrapper<T> instance() {
return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
}
@ -227,7 +227,7 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
}
@Override
public MyLambdaQueryWrapper<T> join(String keyWord, boolean condition, String joinSql) {
public MPJLambdaQueryWrapper<T> join(String keyWord, boolean condition, String joinSql) {
if (condition) {
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.StringPool;
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 java.util.ArrayList;
@ -24,8 +24,8 @@ import java.util.stream.Collectors;
* copy {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
*/
@SuppressWarnings("serial")
public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper<T>>
implements Query<MyQueryWrapper<T>, T, String>, MyJoin<MyQueryWrapper<T>> {
public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapper<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);
public MyQueryWrapper() {
public MPJQueryWrapper() {
this(null);
}
public MyQueryWrapper(T entity) {
public MPJQueryWrapper(T entity) {
super.setEntity(entity);
super.initNeed();
}
public MyQueryWrapper(T entity, String... columns) {
public MPJQueryWrapper(T entity, String... columns) {
super.setEntity(entity);
super.initNeed();
this.select(columns);
@ -63,7 +63,7 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
*
* @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,
SharedString sqlSelect, SharedString from, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
super.setEntity(entity);
@ -79,11 +79,11 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
}
@Override
public MyQueryWrapper<T> select(String... columns) {
public MPJQueryWrapper<T> select(String... columns) {
return select(true, columns);
}
public MyQueryWrapper<T> select(boolean condition, String... columns) {
public MPJQueryWrapper<T> select(boolean condition, String... columns) {
if (condition) {
if (ArrayUtils.isNotEmpty(columns)) {
this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns));
@ -93,11 +93,11 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
}
@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);
}
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) {
super.setEntityClass(entityClass);
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);
}
public final MyQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) {
public final MPJQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) {
if (condition) {
TableInfo info = TableInfoHelper.getTableInfo(clazz);
List<String> list = new ArrayList<>();
@ -145,8 +145,8 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
/**
* 返回一个支持 lambda 函数写法的 wrapper
*/
public MyLambdaQueryWrapper<T> lambda() {
return new MyLambdaQueryWrapper<>(getEntity(), getEntityClass(), from, sqlSelect, paramNameSeq, paramNameValuePairs,
public MPJLambdaQueryWrapper<T> lambda() {
return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), from, sqlSelect, paramNameSeq, paramNameValuePairs,
expression, lastSql, sqlComment, sqlFirst);
}
@ -157,8 +157,8 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
* </p>
*/
@Override
protected MyQueryWrapper<T> instance() {
return new MyQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(),
protected MPJQueryWrapper<T> instance() {
return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(),
null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
}
@ -169,7 +169,7 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
}
@Override
public MyQueryWrapper<T> join(String keyWord, boolean condition, String joinSql) {
public MPJQueryWrapper<T> join(String keyWord, boolean condition, String joinSql) {
if (condition) {
from.setStringValue(from.getStringValue() + keyWord + joinSql);
}

View File

@ -1,12 +1,12 @@
package com.github.yulichang.query.interfaces;
import com.github.yulichang.interfaces.BaseJoin;
import com.github.yulichang.interfaces.MPJBaseJoin;
import com.github.yulichang.toolkit.Constant;
/**
* @author yulichang
*/
public interface MyJoin<Children> extends BaseJoin {
public interface MPJJoin<Children> extends MPJBaseJoin {
default Children leftJoin(String 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;
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.support.SFunction;
import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
@ -12,17 +11,17 @@ import java.util.Objects;
/**
* @author yulichang
* @see LambdaUtils
* @see com.baomidou.mybatisplus.core.toolkit.LambdaUtils
* @see PropertyNamer
*/
public final class MyLambdaUtils {
public final class LambdaUtils {
/**
* 获取lambda属性名 UserDO::getId -> id
* 获取lambda属性名
*/
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) {
SerializedLambda lambda = LambdaUtils.resolve(fn);
SerializedLambda lambda = com.baomidou.mybatisplus.core.toolkit.LambdaUtils.resolve(fn);
String fieldName = PropertyNamer.methodToProperty(lambda.getImplMethodName());
try {
Field field = lambda.getImplClass().getDeclaredField(fieldName);
@ -46,6 +45,6 @@ public final class MyLambdaUtils {
@SuppressWarnings("unchecked")
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.SFunction;
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.HashMap;
@ -17,8 +17,8 @@ import static java.util.stream.Collectors.joining;
* copy {@link com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper}
*/
@SuppressWarnings("serial")
public abstract class MyAbstractLambdaWrapper<T, Children extends MyAbstractLambdaWrapper<T, Children>>
extends MyAbstractWrapper<T, Children> {
public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLambdaWrapper<T, Children>>
extends MPJAbstractWrapper<T, Children> {
private Map<String, ColumnCache> columnMap = null;
private boolean initColumnMap = false;
@ -49,8 +49,8 @@ public abstract class MyAbstractLambdaWrapper<T, Children extends MyAbstractLamb
}
protected String columnToString(SFunction<?, ?> column, boolean onlyColumn) {
return Constant.TABLE_ALIAS + getDefault(subTable.get(MyLambdaUtils.getEntityClass(column))) + StringPool.DOT +
MyLambdaUtils.getColumn(column);
return Constant.TABLE_ALIAS + getDefault(subTable.get(LambdaUtils.getEntityClass(column))) + StringPool.DOT +
LambdaUtils.getColumn(column);
}
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.StringEscape;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.wrapper.interfaces.MyCompare;
import com.github.yulichang.wrapper.interfaces.MyFunc;
import com.github.yulichang.wrapper.interfaces.Compare;
import com.github.yulichang.wrapper.interfaces.Func;
import java.util.Arrays;
import java.util.Collection;
@ -31,8 +31,8 @@ import static java.util.stream.Collectors.joining;
* copy {@link com.baomidou.mybatisplus.core.conditions.AbstractWrapper}
*/
@SuppressWarnings({"serial", "unchecked"})
public abstract class MyAbstractWrapper<T, Children extends MyAbstractWrapper<T, Children>> extends Wrapper<T>
implements MyCompare<Children>, Nested<Children, Children>, Join<Children>, MyFunc<Children> {
public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<T, Children>> extends Wrapper<T>
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.support.SFunction;
import com.github.yulichang.toolkit.Constant;
import com.github.yulichang.toolkit.MyLambdaUtils;
import com.github.yulichang.wrapper.interfaces.MyLambdaJoin;
import com.github.yulichang.wrapper.interfaces.MySFunctionQuery;
import com.github.yulichang.toolkit.LambdaUtils;
import com.github.yulichang.wrapper.interfaces.LambdaJoin;
import com.github.yulichang.wrapper.interfaces.SFunctionQuery;
import java.util.ArrayList;
import java.util.List;
@ -26,8 +26,8 @@ import java.util.stream.Collectors;
* copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper}
*/
@SuppressWarnings("all")
public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJoinLambdaQueryWrapper<T>>
implements MySFunctionQuery<MyJoinLambdaQueryWrapper<T>>, MyLambdaJoin<MyJoinLambdaQueryWrapper<T>> {
public class MPJJoinLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJJoinLambdaQueryWrapper<T>>
implements SFunctionQuery<MPJJoinLambdaQueryWrapper<T>>, LambdaJoin<MPJJoinLambdaQueryWrapper<T>> {
/**
* 查询字段 sql
@ -57,14 +57,14 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
/**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/
public MyJoinLambdaQueryWrapper() {
public MPJJoinLambdaQueryWrapper() {
this((T) null);
}
/**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/
public MyJoinLambdaQueryWrapper(T entity) {
public MPJJoinLambdaQueryWrapper(T entity) {
super.setEntity(entity);
super.initNeed();
}
@ -72,7 +72,7 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
/**
* 不建议直接 new 该实例使用 Wrappers.lambdaQuery(entity)
*/
public MyJoinLambdaQueryWrapper(Class<T> entityClass) {
public MPJJoinLambdaQueryWrapper(Class<T> entityClass) {
super.setEntityClass(entityClass);
super.initNeed();
}
@ -80,7 +80,7 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
/**
* 不建议直接 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,
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
super.setEntity(entity);
@ -100,26 +100,26 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
* @param columns 查询字段
*/
@SafeVarargs
public final <S> MyJoinLambdaQueryWrapper<T> select(SFunction<S, ?>... columns) {
public final <S> MPJJoinLambdaQueryWrapper<T> select(SFunction<S, ?>... columns) {
return select(true, columns);
}
@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)) {
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;
}
@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);
}
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) {
TableInfo info = TableInfoHelper.getTableInfo(entityClass);
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);
}
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) {
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;
}
public final MyJoinLambdaQueryWrapper<T> selectAll(Class<?> clazz) {
public final MPJJoinLambdaQueryWrapper<T> selectAll(Class<?> 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) {
TableInfo info = TableInfoHelper.getTableInfo(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>
*/
@Override
protected MyJoinLambdaQueryWrapper<T> instance() {
return new MyJoinLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs,
protected MPJJoinLambdaQueryWrapper<T> instance() {
return new MPJJoinLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
}
@ -197,7 +197,7 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
}
@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) {
subTable.put(clazz, tableIndex);
TableInfo leftInfo = TableInfoHelper.getTableInfo(clazz);
@ -212,12 +212,12 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
.append(Constant.TABLE_ALIAS)
.append(tableIndex)
.append(StringPool.DOT)
.append(MyLambdaUtils.getColumn(left))
.append(LambdaUtils.getColumn(left))
.append(Constant.EQUALS)
.append(Constant.TABLE_ALIAS)
.append(getDefault(subTable.get(MyLambdaUtils.getEntityClass(right))))
.append(getDefault(subTable.get(LambdaUtils.getEntityClass(right))))
.append(StringPool.DOT)
.append(MyLambdaUtils.getColumn(right));
.append(LambdaUtils.getColumn(right));
tableIndex++;
if (StringUtils.isBlank(from.getStringValue())) {

View File

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

View File

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

View File

@ -1,13 +1,13 @@
package com.github.yulichang.wrapper.interfaces;
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;
/**
* @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) {
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}
*/
public interface MySFunctionQuery<Children> extends Serializable {
public interface SFunctionQuery<Children> extends Serializable {
/**
* 设置查询字段