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
6792627b8b
commit
b6419c55bf
202
README.md
202
README.md
@ -1,6 +1,7 @@
|
||||
# mybatis-plus-join
|
||||
|
||||
支持连表查询的[mybatis-plus](https://gitee.com/baomidou/mybatis-plus)
|
||||
只做增强,不做修改,可以使用原生mybatis-plus全部的功能
|
||||
|
||||
## 使用方法
|
||||
|
||||
@ -8,7 +9,8 @@
|
||||
|
||||
### 方法一
|
||||
|
||||
1. 在项目中添加依赖,依赖已经包含了mybatis-plus3.4.2,依赖后无需再次引入mybatis-plus
|
||||
1. 在项目中添加依赖,依赖已经包含了mybatis-plus-boot-starter<3.4.2><br>
|
||||
依赖后无需再次引入mybatis-plus
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
@ -20,26 +22,24 @@
|
||||
|
||||
2. 配置插件,添加MyJoinInterceptor
|
||||
|
||||
```java
|
||||
|
||||
@Configuration
|
||||
public class MybatisPlusConfig {
|
||||
|
||||
/**
|
||||
* 启用连表拦截器
|
||||
*/
|
||||
@Bean
|
||||
public MybatisPlusInterceptor paginationInterceptor() {
|
||||
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
|
||||
//分页插件
|
||||
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
|
||||
//连表插件
|
||||
mybatisPlusInterceptor.addInnerInterceptor(new MyJoinInterceptor());
|
||||
//可以添加多租户或其他插件
|
||||
return mybatisPlusInterceptor;
|
||||
```java
|
||||
@Configuration
|
||||
public class MybatisPlusConfig {
|
||||
/**
|
||||
* 启用连表拦截器
|
||||
*/
|
||||
@Bean
|
||||
public MybatisPlusInterceptor paginationInterceptor() {
|
||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||
//分页插件
|
||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
|
||||
//连表插件
|
||||
interceptor.addInnerInterceptor(new MyJoinInterceptor());
|
||||
//可以添加多租户或其他插件
|
||||
return mybatisPlusInterceptor;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
### 使用
|
||||
|
||||
@ -65,6 +65,8 @@ public class MybatisPlusConfig {
|
||||
|---|---|---|---|
|
||||
|select(String)|支持|<font color=red>**支持**|不支持|
|
||||
|select(lambda)|不支持|仅支持主表lambda|所有表lambda|
|
||||
|join(String)|支持|支持|不支持|
|
||||
|join(lambda)|不支持|不支持|支持|
|
||||
|条件String|支持|不支持|不支持|
|
||||
|条件lambda|不支持|仅支持主表lambda|所有表lambda|
|
||||
|
||||
@ -72,8 +74,8 @@ MyQueryWrapper相当于mp的QueryWrapper
|
||||
MyLambdaQueryWrapper相当于mp的LambdaQueryWrapper
|
||||
|
||||
两者可以无缝切换
|
||||
MyQueryWrapper.lambda() -> MyLambdaQueryWrapper
|
||||
MyLambdaQueryWrapper.stringQuery() -> MyQueryWrapper
|
||||
MyQueryWrapper.lambda() ===> MyLambdaQueryWrapper
|
||||
MyLambdaQueryWrapper.stringQuery() ===> MyQueryWrapper
|
||||
|
||||
## MyQueryWrapper和MyLambdaQueryWrapper
|
||||
|
||||
@ -102,22 +104,24 @@ class test {
|
||||
|
||||
对应sql
|
||||
|
||||
```sql
|
||||
SELECT t.id,
|
||||
t.name,
|
||||
t.sex,
|
||||
t.head_img,
|
||||
addr.tel,
|
||||
addr.address,
|
||||
a.province
|
||||
FROM user t
|
||||
LEFT JOIN user_address addr on t.id = addr.user_id
|
||||
RIGHT JOIN area a on addr.area_id = a.id
|
||||
```
|
||||
SELECT
|
||||
t.id,
|
||||
t.name,
|
||||
t.sex,
|
||||
t.head_img,
|
||||
addr.tel,
|
||||
addr.address,
|
||||
a.province
|
||||
FROM
|
||||
user t
|
||||
LEFT JOIN user_address addr on t.id = addr.user_id
|
||||
RIGHT JOIN area a on addr.area_id = a.id
|
||||
WHERE (
|
||||
t.id > ?
|
||||
AND t.sex = ?
|
||||
AND addr.tel LIKE ?
|
||||
AND a.province <= ?)
|
||||
t.id > ?
|
||||
AND t.sex = ?
|
||||
AND addr.tel LIKE ?
|
||||
AND a.province <= ?)
|
||||
```
|
||||
|
||||
说明:
|
||||
@ -152,17 +156,20 @@ class test {
|
||||
|
||||
对应sql
|
||||
|
||||
```sql
|
||||
SELECT t.id,
|
||||
t.name,
|
||||
t.sex,
|
||||
t.head_img,
|
||||
addr.tel,
|
||||
addr.address,
|
||||
a.province
|
||||
FROM user t
|
||||
LEFT JOIN user_address addr on t.id = addr.user_id
|
||||
RIGHT JOIN area a on addr.area_id = a.id LIMIT ?,?
|
||||
```
|
||||
SELECT
|
||||
t.id,
|
||||
t.name,
|
||||
t.sex,
|
||||
t.head_img,
|
||||
addr.tel,
|
||||
addr.address,
|
||||
a.province
|
||||
FROM
|
||||
user t
|
||||
LEFT JOIN user_address addr on t.id = addr.user_id
|
||||
RIGHT JOIN area a on addr.area_id = a.id
|
||||
LIMIT ?,?
|
||||
```
|
||||
|
||||
### 还可以这么操作,但不建议
|
||||
@ -180,7 +187,7 @@ class test {
|
||||
//行列转换
|
||||
.select("CASE t.sex WHEN '男' THEN '1' ELSE '0' END AS sex")
|
||||
//求和函数
|
||||
.select("sum(a.province) as province")
|
||||
.select("sum(a.province) AS province")
|
||||
//自定义数据集
|
||||
.leftJoin("(select * from user_address) addr on t.id = addr.user_id")
|
||||
.rightJoin("area a on addr.area_id = a.id")
|
||||
@ -195,31 +202,32 @@ class test {
|
||||
|
||||
对应sql
|
||||
|
||||
```mysql
|
||||
SELECT t.id,
|
||||
t.name,
|
||||
t.sex,
|
||||
t.head_img,
|
||||
addr.tel,
|
||||
addr.address,
|
||||
CASE t.sex WHEN '男' THEN '1' ELSE '0' END AS sex,
|
||||
sum(a.province) as province
|
||||
FROM user t
|
||||
LEFT JOIN (select * from user_address) addr on t.id = addr.user_id
|
||||
RIGHT JOIN area a on addr.area_id = a.id
|
||||
WHERE t.id = ?
|
||||
AND addr.tel LIKE ?
|
||||
AND a.province <= ?)
|
||||
```
|
||||
SELECT
|
||||
t.id,
|
||||
t.name,
|
||||
t.sex,
|
||||
t.head_img,
|
||||
addr.tel,
|
||||
addr.address,
|
||||
CASE t.sex WHEN '男' THEN '1' ELSE '0' END AS sex,
|
||||
sum(a.province) AS province
|
||||
FROM
|
||||
user t
|
||||
LEFT JOIN (select * from user_address) addr on t.id = addr.user_id
|
||||
RIGHT JOIN area a on addr.area_id = a.id
|
||||
WHERE (
|
||||
t.id = ?
|
||||
AND addr.tel LIKE ?
|
||||
AND a.province <= ?)
|
||||
ORDER BY
|
||||
addr.id
|
||||
DESC
|
||||
addr.id DESC
|
||||
```
|
||||
|
||||
## MyJoinLambdaQueryWrapper用法
|
||||
|
||||
MyJoinLambdaQueryWrapper与上面连个Wrapper不同,是一套新的支持多表的wrapper
|
||||
MyQueryWrapper是基于QueryWrapper扩展的
|
||||
MyLambdaQueryWrapper是基于LambdaQueryWrapper扩展的
|
||||
MyQueryWrapper是基于QueryWrapper扩展的 MyLambdaQueryWrapper是基于LambdaQueryWrapper扩展的
|
||||
而LambdaQueryWrapper由于泛型约束,不支持扩展成多表的lambdaWrapper
|
||||
|
||||
#### MyJoinLambdaQueryWrapper示例
|
||||
@ -249,22 +257,24 @@ class test {
|
||||
|
||||
对应sql
|
||||
|
||||
```sql
|
||||
SELECT user.id,
|
||||
user.name,
|
||||
user.sex,
|
||||
user.head_img,
|
||||
user_address.tel,
|
||||
user_address.address AS userAddress,
|
||||
area.province,
|
||||
area.city
|
||||
FROM user
|
||||
LEFT JOIN user_address ON user_address.user_id = user.id
|
||||
LEFT JOIN area ON area.id = user_address.area_id
|
||||
```
|
||||
SELECT
|
||||
user.id,
|
||||
user.name,
|
||||
user.sex,
|
||||
user.head_img,
|
||||
user_address.tel,
|
||||
user_address.address AS userAddress,
|
||||
area.province,
|
||||
area.city
|
||||
FROM
|
||||
user
|
||||
LEFT JOIN user_address ON user_address.user_id = user.id
|
||||
LEFT JOIN area ON area.id = user_address.area_id
|
||||
WHERE (
|
||||
user.id = ?
|
||||
AND user_address.tel LIKE ?
|
||||
AND user.id > ?)
|
||||
user.id = ?
|
||||
AND user_address.tel LIKE ?
|
||||
AND user.id > ?)
|
||||
```
|
||||
|
||||
说明:
|
||||
@ -302,18 +312,20 @@ class test {
|
||||
|
||||
对应sql
|
||||
|
||||
```mysql
|
||||
SELECT user.id,
|
||||
user.name,
|
||||
user.sex,
|
||||
user.head_img,
|
||||
user_address.tel,
|
||||
user_address.address AS userAddress,
|
||||
area.province,
|
||||
area.city
|
||||
FROM user
|
||||
LEFT JOIN user_address ON user_address.user_id = user.id
|
||||
LEFT JOIN area ON area.id = user_address.area_id
|
||||
```
|
||||
SELECT
|
||||
t.id,
|
||||
t.name,
|
||||
t.sex,
|
||||
t.head_img,
|
||||
t1.tel,
|
||||
t1.address AS userAddress,
|
||||
t2.province,
|
||||
t2.city
|
||||
FROM
|
||||
user t
|
||||
LEFT JOIN user_address t1 ON t1.user_id = t.id
|
||||
LEFT JOIN area t2 ON t2.id = t1.area_id
|
||||
LIMIT ?,?
|
||||
```
|
||||
|
||||
|
14
pom.xml
14
pom.xml
@ -33,7 +33,7 @@
|
||||
<jdkVersion>1.8</jdkVersion>
|
||||
<jdkVersion.test>1.8</jdkVersion.test>
|
||||
</properties>
|
||||
|
||||
<!-- only dependency mybatis-plus-boot-starter -->
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
@ -41,16 +41,8 @@
|
||||
<version>3.4.2</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cglib</groupId>
|
||||
<artifactId>cglib</artifactId>
|
||||
<version>3.3.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
@ -103,7 +95,7 @@
|
||||
<configuration>
|
||||
<serverId>ossrh</serverId>
|
||||
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
||||
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
|
||||
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
|
||||
<stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
@ -174,7 +166,7 @@
|
||||
<configuration>
|
||||
<serverId>ossrh</serverId>
|
||||
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
||||
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
|
||||
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
|
||||
<stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
@ -27,7 +27,7 @@ import java.util.stream.Collectors;
|
||||
* <p>
|
||||
* sqlSelect 由覆盖改为追加
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
@SuppressWarnings("all")
|
||||
public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambdaQueryWrapper<T>>
|
||||
implements Query<MyLambdaQueryWrapper<T>, T, SFunction<T, ?>>, MyJoin<MyLambdaQueryWrapper<T>> {
|
||||
|
||||
@ -96,7 +96,12 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
|
||||
@SafeVarargs
|
||||
@Override
|
||||
public final MyLambdaQueryWrapper<T> select(SFunction<T, ?>... columns) {
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
return select(true, columns);
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
public final MyLambdaQueryWrapper<T> select(boolean condition, SFunction<T, ?>... columns) {
|
||||
if (condition && ArrayUtils.isNotEmpty(columns)) {
|
||||
String s = columnsToString(false, columns);
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
this.sqlSelect.setStringValue(s);
|
||||
@ -109,7 +114,12 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
|
||||
|
||||
@SafeVarargs
|
||||
public final MyLambdaQueryWrapper<T> select(String... columns) {
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
return select(true, columns);
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
public final MyLambdaQueryWrapper<T> select(boolean condition, String... columns) {
|
||||
if (condition && ArrayUtils.isNotEmpty(columns)) {
|
||||
String s = String.join(StringPool.COMMA, columns);
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
this.sqlSelect.setStringValue(s);
|
||||
@ -133,35 +143,47 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
|
||||
*/
|
||||
@Override
|
||||
public MyLambdaQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||
if (entityClass == null) {
|
||||
entityClass = getEntityClass();
|
||||
} else {
|
||||
setEntityClass(entityClass);
|
||||
}
|
||||
Assert.notNull(entityClass, "entityClass can not be null");
|
||||
String s = TableInfoHelper.getTableInfo(entityClass).chooseSelect(predicate);
|
||||
List<String> list = Arrays.stream(s.split(StringPool.COMMA)).map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i).collect(Collectors.toList());
|
||||
String join = String.join(StringPool.COMMA, list);
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
this.sqlSelect.setStringValue(join);
|
||||
} else {
|
||||
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join);
|
||||
return select(true, entityClass, predicate);
|
||||
}
|
||||
|
||||
public MyLambdaQueryWrapper<T> select(boolean condition, Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||
if (condition) {
|
||||
if (entityClass == null) {
|
||||
entityClass = getEntityClass();
|
||||
} else {
|
||||
setEntityClass(entityClass);
|
||||
}
|
||||
Assert.notNull(entityClass, "entityClass can not be null");
|
||||
String s = TableInfoHelper.getTableInfo(entityClass).chooseSelect(predicate);
|
||||
List<String> list = Arrays.stream(s.split(StringPool.COMMA)).map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i).collect(Collectors.toList());
|
||||
String join = String.join(StringPool.COMMA, list);
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
this.sqlSelect.setStringValue(join);
|
||||
} else {
|
||||
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join);
|
||||
}
|
||||
}
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
public final MyLambdaQueryWrapper<T> selectAll(Class<T> clazz) {
|
||||
TableInfo info = TableInfoHelper.getTableInfo(clazz);
|
||||
List<String> list = new ArrayList<>();
|
||||
if (info.havePK()) {
|
||||
list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn());
|
||||
}
|
||||
list.addAll(info.getFieldList().stream().map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i.getColumn()).collect(Collectors.toList()));
|
||||
String join = String.join(StringPool.COMMA, list);
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
this.sqlSelect.setStringValue(join);
|
||||
} else {
|
||||
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join);
|
||||
return selectAll(true, clazz);
|
||||
}
|
||||
|
||||
public final MyLambdaQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) {
|
||||
if (condition) {
|
||||
TableInfo info = TableInfoHelper.getTableInfo(clazz);
|
||||
List<String> list = new ArrayList<>();
|
||||
if (info.havePK()) {
|
||||
list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn());
|
||||
}
|
||||
list.addAll(info.getFieldList().stream().map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i.getColumn()).collect(Collectors.toList()));
|
||||
String join = String.join(StringPool.COMMA, list);
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
this.sqlSelect.setStringValue(join);
|
||||
} else {
|
||||
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join);
|
||||
}
|
||||
}
|
||||
return typedThis;
|
||||
}
|
||||
|
@ -80,32 +80,50 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
|
||||
|
||||
@Override
|
||||
public MyQueryWrapper<T> select(String... columns) {
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns));
|
||||
return select(true, columns);
|
||||
}
|
||||
|
||||
public MyQueryWrapper<T> select(boolean condition, String... columns) {
|
||||
if (condition) {
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns));
|
||||
}
|
||||
}
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MyQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||
super.setEntityClass(entityClass);
|
||||
this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate));
|
||||
return select(true, entityClass, predicate);
|
||||
}
|
||||
|
||||
public MyQueryWrapper<T> select(boolean condition, Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||
if (condition) {
|
||||
super.setEntityClass(entityClass);
|
||||
this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate));
|
||||
}
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
|
||||
public final MyQueryWrapper<T> selectAll(Class<T> clazz) {
|
||||
TableInfo info = TableInfoHelper.getTableInfo(clazz);
|
||||
List<String> list = new ArrayList<>();
|
||||
if (info.havePK()) {
|
||||
list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn());
|
||||
}
|
||||
list.addAll(info.getFieldList().stream().map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i.getColumn()).collect(Collectors.toList()));
|
||||
String join = String.join(StringPool.COMMA, list);
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
this.sqlSelect.setStringValue(join);
|
||||
} else {
|
||||
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join);
|
||||
return selectAll(true, clazz);
|
||||
}
|
||||
|
||||
public final MyQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) {
|
||||
if (condition) {
|
||||
TableInfo info = TableInfoHelper.getTableInfo(clazz);
|
||||
List<String> list = new ArrayList<>();
|
||||
if (info.havePK()) {
|
||||
list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn());
|
||||
}
|
||||
list.addAll(info.getFieldList().stream().map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i.getColumn()).collect(Collectors.toList()));
|
||||
String join = String.join(StringPool.COMMA, list);
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
this.sqlSelect.setStringValue(join);
|
||||
} else {
|
||||
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join);
|
||||
}
|
||||
}
|
||||
return typedThis;
|
||||
}
|
||||
|
@ -15,7 +15,9 @@ import com.github.yulichang.toolkit.MyLambdaUtils;
|
||||
import com.github.yulichang.wrapper.interfaces.MyLambdaJoin;
|
||||
import com.github.yulichang.wrapper.interfaces.MySFunctionQuery;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
@ -23,7 +25,7 @@ import java.util.stream.Collectors;
|
||||
/**
|
||||
* copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper}
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
@SuppressWarnings("all")
|
||||
public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJoinLambdaQueryWrapper<T>>
|
||||
implements MySFunctionQuery<MyJoinLambdaQueryWrapper<T>>, MyLambdaJoin<MyJoinLambdaQueryWrapper<T>> {
|
||||
|
||||
@ -99,7 +101,12 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
|
||||
*/
|
||||
@SafeVarargs
|
||||
public final <S> MyJoinLambdaQueryWrapper<T> select(SFunction<S, ?>... columns) {
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
return select(true, columns);
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
public final <S> MyJoinLambdaQueryWrapper<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));
|
||||
}
|
||||
@ -109,30 +116,49 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
|
||||
|
||||
@Override
|
||||
public <E> MyJoinLambdaQueryWrapper<T> select(Class<E> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||
TableInfo info = TableInfoHelper.getTableInfo(entityClass);
|
||||
Assert.notNull(info, "table can not be find");
|
||||
info.getFieldList().stream().filter(predicate).collect(Collectors.toList()).forEach(
|
||||
i -> selectColumns.add(new SelectColumn(entityClass, i.getColumn(), null)));
|
||||
return select(true, entityClass, predicate);
|
||||
}
|
||||
|
||||
public <E> MyJoinLambdaQueryWrapper<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");
|
||||
info.getFieldList().stream().filter(predicate).collect(Collectors.toList()).forEach(
|
||||
i -> selectColumns.add(new SelectColumn(entityClass, i.getColumn(), null)));
|
||||
}
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
|
||||
public final <S, X> MyJoinLambdaQueryWrapper<T> selectAs(SFunction<S, ?> columns, SFunction<X, ?> alias) {
|
||||
selectColumns.add(new SelectColumn(MyLambdaUtils.getEntityClass(columns), MyLambdaUtils.getColumn(columns), MyLambdaUtils.getName(alias)));
|
||||
return selectAs(true, columns, alias);
|
||||
}
|
||||
|
||||
public final <S, X> MyJoinLambdaQueryWrapper<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)));
|
||||
}
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
public final MyJoinLambdaQueryWrapper<T> selectAll(Class<?> clazz) {
|
||||
TableInfo info = TableInfoHelper.getTableInfo(clazz);
|
||||
Assert.notNull(info, "table can not be find -> %s", clazz);
|
||||
if (info.havePK()) {
|
||||
selectColumns.add(new SelectColumn(clazz, info.getKeyColumn(), null));
|
||||
return selectAll(clazz);
|
||||
}
|
||||
|
||||
public final MyJoinLambdaQueryWrapper<T> selectAll(boolean condition, Class<?> clazz) {
|
||||
if (condition) {
|
||||
TableInfo info = TableInfoHelper.getTableInfo(clazz);
|
||||
Assert.notNull(info, "table can not be find -> %s", clazz);
|
||||
if (info.havePK()) {
|
||||
selectColumns.add(new SelectColumn(clazz, info.getKeyColumn(), null));
|
||||
}
|
||||
info.getFieldList().forEach(c ->
|
||||
selectColumns.add(new SelectColumn(clazz, c.getColumn(), null)));
|
||||
}
|
||||
info.getFieldList().forEach(c ->
|
||||
selectColumns.add(new SelectColumn(clazz, c.getColumn(), null)));
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getSqlSelect() {
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user