mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
update
This commit is contained in:
parent
e82c72ae6f
commit
c37946221c
53
README.md
53
README.md
@ -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
140
ossrh.xml
Normal 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
147
pom.xml
@ -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>
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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) {
|
@ -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;
|
||||
|
@ -3,5 +3,5 @@ package com.github.yulichang.interfaces;
|
||||
/**
|
||||
* @author yulichang
|
||||
*/
|
||||
public interface BaseJoin {
|
||||
public interface MPJBaseJoin {
|
||||
}
|
@ -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) {
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
@ -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,9 +73,9 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
|
||||
/**
|
||||
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(...)
|
||||
*/
|
||||
MyLambdaQueryWrapper(T entity, Class<T> entityClass, SharedString from, SharedString sqlSelect, AtomicInteger paramNameSeq,
|
||||
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
|
||||
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
|
||||
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);
|
||||
super.setEntityClass(entityClass);
|
||||
this.paramNameSeq = paramNameSeq;
|
||||
@ -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);
|
||||
}
|
@ -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,9 +63,9 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
|
||||
*
|
||||
* @param entityClass 本不应该需要的
|
||||
*/
|
||||
public MyQueryWrapper(T entity, Class<T> entityClass, AtomicInteger paramNameSeq,
|
||||
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
|
||||
SharedString sqlSelect, SharedString from, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
|
||||
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);
|
||||
super.setEntityClass(entityClass);
|
||||
this.paramNameSeq = paramNameSeq;
|
||||
@ -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);
|
||||
}
|
@ -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);
|
28
src/main/java/com/github/yulichang/toolkit/BeanUtils.java
Normal file
28
src/main/java/com/github/yulichang/toolkit/BeanUtils.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
30
src/main/java/com/github/yulichang/toolkit/StreamUtils.java
Normal file
30
src/main/java/com/github/yulichang/toolkit/StreamUtils.java
Normal 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<>();
|
||||
}
|
||||
}
|
@ -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) {
|
@ -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> {
|
||||
|
||||
/**
|
||||
* 占位符
|
@ -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,9 +80,9 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
|
||||
/**
|
||||
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(...)
|
||||
*/
|
||||
MyJoinLambdaQueryWrapper(T entity, Class<T> entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq,
|
||||
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
|
||||
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
|
||||
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);
|
||||
super.setEntityClass(entityClass);
|
||||
this.paramNameSeq = paramNameSeq;
|
||||
@ -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())) {
|
@ -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
|
@ -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
|
@ -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);
|
@ -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 {
|
||||
|
||||
/**
|
||||
* 设置查询字段
|
Loading…
x
Reference in New Issue
Block a user