This commit is contained in:
admin 2021-02-05 13:54:53 +08:00
parent 6792627b8b
commit b6419c55bf
5 changed files with 233 additions and 163 deletions

204
README.md
View File

@ -1,6 +1,7 @@
# mybatis-plus-join # mybatis-plus-join
支持连表查询的[mybatis-plus](https://gitee.com/baomidou/mybatis-plus) 支持连表查询的[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 ```xml
<dependency> <dependency>
@ -20,26 +22,24 @@
2. 配置插件,添加MyJoinInterceptor 2. 配置插件,添加MyJoinInterceptor
```java ```java
@Configuration
@Configuration public class MybatisPlusConfig {
public class MybatisPlusConfig { /**
* 启用连表拦截器
/** */
* 启用连表拦截器 @Bean
*/ public MybatisPlusInterceptor paginationInterceptor() {
@Bean MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
public MybatisPlusInterceptor paginationInterceptor() { //分页插件
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
//分页插件 //连表插件
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor()); interceptor.addInnerInterceptor(new MyJoinInterceptor());
//连表插件 //可以添加多租户或其他插件
mybatisPlusInterceptor.addInnerInterceptor(new MyJoinInterceptor()); return mybatisPlusInterceptor;
//可以添加多租户或其他插件 }
return mybatisPlusInterceptor;
} }
} ```
```
### 使用 ### 使用
@ -65,6 +65,8 @@ public class MybatisPlusConfig {
|---|---|---|---| |---|---|---|---|
|select(String)|支持|<font color=red>**支持**|不支持| |select(String)|支持|<font color=red>**支持**|不支持|
|select(lambda)|不支持|仅支持主表lambda|所有表lambda| |select(lambda)|不支持|仅支持主表lambda|所有表lambda|
|join(String)|支持|支持|不支持|
|join(lambda)|不支持|不支持|支持|
|条件String|支持|不支持|不支持| |条件String|支持|不支持|不支持|
|条件lambda|不支持|仅支持主表lambda|所有表lambda| |条件lambda|不支持|仅支持主表lambda|所有表lambda|
@ -72,8 +74,8 @@ MyQueryWrapper相当于mp的QueryWrapper
MyLambdaQueryWrapper相当于mp的LambdaQueryWrapper MyLambdaQueryWrapper相当于mp的LambdaQueryWrapper
两者可以无缝切换 两者可以无缝切换
MyQueryWrapper.lambda() -> MyLambdaQueryWrapper MyQueryWrapper.lambda() ===> MyLambdaQueryWrapper
MyLambdaQueryWrapper.stringQuery() -> MyQueryWrapper MyLambdaQueryWrapper.stringQuery() ===> MyQueryWrapper
## MyQueryWrapper和MyLambdaQueryWrapper ## MyQueryWrapper和MyLambdaQueryWrapper
@ -102,22 +104,24 @@ class test {
对应sql 对应sql
```sql ```
SELECT t.id, SELECT
t.name, t.id,
t.sex, t.name,
t.head_img, t.sex,
addr.tel, t.head_img,
addr.address, addr.tel,
a.province addr.address,
FROM user t a.province
LEFT JOIN user_address addr on t.id = addr.user_id FROM
RIGHT JOIN area a on addr.area_id = a.id user t
LEFT JOIN user_address addr on t.id = addr.user_id
RIGHT JOIN area a on addr.area_id = a.id
WHERE ( WHERE (
t.id > ? t.id > ?
AND t.sex = ? AND t.sex = ?
AND addr.tel LIKE ? AND addr.tel LIKE ?
AND a.province <= ?) AND a.province <= ?)
``` ```
说明: 说明:
@ -152,17 +156,20 @@ class test {
对应sql 对应sql
```sql ```
SELECT t.id, SELECT
t.name, t.id,
t.sex, t.name,
t.head_img, t.sex,
addr.tel, t.head_img,
addr.address, addr.tel,
a.province addr.address,
FROM user t a.province
LEFT JOIN user_address addr on t.id = addr.user_id FROM
RIGHT JOIN area a on addr.area_id = a.id LIMIT ?,? 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("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") .leftJoin("(select * from user_address) addr on t.id = addr.user_id")
.rightJoin("area a on addr.area_id = a.id") .rightJoin("area a on addr.area_id = a.id")
@ -195,31 +202,32 @@ class test {
对应sql 对应sql
```mysql ```
SELECT t.id, SELECT
t.name, t.id,
t.sex, t.name,
t.head_img, t.sex,
addr.tel, t.head_img,
addr.address, addr.tel,
CASE t.sex WHEN '男' THEN '1' ELSE '0' END AS sex, addr.address,
sum(a.province) as province CASE t.sex WHEN '男' THEN '1' ELSE '0' END AS sex,
FROM user t sum(a.province) AS province
LEFT JOIN (select * from user_address) addr on t.id = addr.user_id FROM
RIGHT JOIN area a on addr.area_id = a.id user t
WHERE t.id = ? LEFT JOIN (select * from user_address) addr on t.id = addr.user_id
AND addr.tel LIKE ? RIGHT JOIN area a on addr.area_id = a.id
AND a.province <= ?) WHERE (
t.id = ?
AND addr.tel LIKE ?
AND a.province <= ?)
ORDER BY ORDER BY
addr.id addr.id DESC
DESC
``` ```
## MyJoinLambdaQueryWrapper用法 ## MyJoinLambdaQueryWrapper用法
MyJoinLambdaQueryWrapper与上面连个Wrapper不同,是一套新的支持多表的wrapper MyJoinLambdaQueryWrapper与上面连个Wrapper不同,是一套新的支持多表的wrapper
MyQueryWrapper是基于QueryWrapper扩展的 MyQueryWrapper是基于QueryWrapper扩展的 MyLambdaQueryWrapper是基于LambdaQueryWrapper扩展的
MyLambdaQueryWrapper是基于LambdaQueryWrapper扩展的
而LambdaQueryWrapper由于泛型约束,不支持扩展成多表的lambdaWrapper 而LambdaQueryWrapper由于泛型约束,不支持扩展成多表的lambdaWrapper
#### MyJoinLambdaQueryWrapper示例 #### MyJoinLambdaQueryWrapper示例
@ -249,22 +257,24 @@ class test {
对应sql 对应sql
```sql ```
SELECT user.id, SELECT
user.name, user.id,
user.sex, user.name,
user.head_img, user.sex,
user_address.tel, user.head_img,
user_address.address AS userAddress, user_address.tel,
area.province, user_address.address AS userAddress,
area.city area.province,
FROM user area.city
LEFT JOIN user_address ON user_address.user_id = user.id FROM
LEFT JOIN area ON area.id = user_address.area_id user
LEFT JOIN user_address ON user_address.user_id = user.id
LEFT JOIN area ON area.id = user_address.area_id
WHERE ( WHERE (
user.id = ? user.id = ?
AND user_address.tel LIKE ? AND user_address.tel LIKE ?
AND user.id > ?) AND user.id > ?)
``` ```
说明: 说明:
@ -302,18 +312,20 @@ class test {
对应sql 对应sql
```mysql ```
SELECT user.id, SELECT
user.name, t.id,
user.sex, t.name,
user.head_img, t.sex,
user_address.tel, t.head_img,
user_address.address AS userAddress, t1.tel,
area.province, t1.address AS userAddress,
area.city t2.province,
FROM user t2.city
LEFT JOIN user_address ON user_address.user_id = user.id FROM
LEFT JOIN area ON area.id = user_address.area_id user t
LEFT JOIN user_address t1 ON t1.user_id = t.id
LEFT JOIN area t2 ON t2.id = t1.area_id
LIMIT ?,? LIMIT ?,?
``` ```

14
pom.xml
View File

@ -33,7 +33,7 @@
<jdkVersion>1.8</jdkVersion> <jdkVersion>1.8</jdkVersion>
<jdkVersion.test>1.8</jdkVersion.test> <jdkVersion.test>1.8</jdkVersion.test>
</properties> </properties>
<!-- only dependency mybatis-plus-boot-starter -->
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
@ -41,16 +41,8 @@
<version>3.4.2</version> <version>3.4.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
@ -103,7 +95,7 @@
<configuration> <configuration>
<serverId>ossrh</serverId> <serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl> <nexusUrl>https://oss.sonatype.org/</nexusUrl>
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>--> <!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
<stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes> <stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes>
</configuration> </configuration>
</plugin> </plugin>
@ -174,7 +166,7 @@
<configuration> <configuration>
<serverId>ossrh</serverId> <serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl> <nexusUrl>https://oss.sonatype.org/</nexusUrl>
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>--> <!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>-->
<stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes> <stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes>
</configuration> </configuration>
</plugin> </plugin>

View File

@ -27,7 +27,7 @@ import java.util.stream.Collectors;
* <p> * <p>
* sqlSelect 由覆盖改为追加 * sqlSelect 由覆盖改为追加
*/ */
@SuppressWarnings("serial") @SuppressWarnings("all")
public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambdaQueryWrapper<T>> public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambdaQueryWrapper<T>>
implements Query<MyLambdaQueryWrapper<T>, T, SFunction<T, ?>>, MyJoin<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 @SafeVarargs
@Override @Override
public final MyLambdaQueryWrapper<T> select(SFunction<T, ?>... columns) { 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); String s = columnsToString(false, columns);
if (StringUtils.isBlank(sqlSelect.getStringValue())) { if (StringUtils.isBlank(sqlSelect.getStringValue())) {
this.sqlSelect.setStringValue(s); this.sqlSelect.setStringValue(s);
@ -109,7 +114,12 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
@SafeVarargs @SafeVarargs
public final MyLambdaQueryWrapper<T> select(String... columns) { 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); String s = String.join(StringPool.COMMA, columns);
if (StringUtils.isBlank(sqlSelect.getStringValue())) { if (StringUtils.isBlank(sqlSelect.getStringValue())) {
this.sqlSelect.setStringValue(s); this.sqlSelect.setStringValue(s);
@ -133,35 +143,47 @@ public class MyLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyLambda
*/ */
@Override @Override
public MyLambdaQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) { public MyLambdaQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
if (entityClass == null) { return select(true, entityClass, predicate);
entityClass = getEntityClass(); }
} else {
setEntityClass(entityClass); public MyLambdaQueryWrapper<T> select(boolean condition, Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
} if (condition) {
Assert.notNull(entityClass, "entityClass can not be null"); if (entityClass == null) {
String s = TableInfoHelper.getTableInfo(entityClass).chooseSelect(predicate); entityClass = getEntityClass();
List<String> list = Arrays.stream(s.split(StringPool.COMMA)).map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i).collect(Collectors.toList()); } else {
String join = String.join(StringPool.COMMA, list); setEntityClass(entityClass);
if (StringUtils.isBlank(sqlSelect.getStringValue())) { }
this.sqlSelect.setStringValue(join); Assert.notNull(entityClass, "entityClass can not be null");
} else { String s = TableInfoHelper.getTableInfo(entityClass).chooseSelect(predicate);
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join); 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; return typedThis;
} }
public final MyLambdaQueryWrapper<T> selectAll(Class<T> clazz) { public final MyLambdaQueryWrapper<T> selectAll(Class<T> clazz) {
TableInfo info = TableInfoHelper.getTableInfo(clazz); return selectAll(true, clazz);
List<String> list = new ArrayList<>(); }
if (info.havePK()) {
list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn()); public final MyLambdaQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) {
} if (condition) {
list.addAll(info.getFieldList().stream().map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i.getColumn()).collect(Collectors.toList())); TableInfo info = TableInfoHelper.getTableInfo(clazz);
String join = String.join(StringPool.COMMA, list); List<String> list = new ArrayList<>();
if (StringUtils.isBlank(sqlSelect.getStringValue())) { if (info.havePK()) {
this.sqlSelect.setStringValue(join); list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn());
} else { }
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join); 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; return typedThis;
} }

View File

@ -80,32 +80,50 @@ public class MyQueryWrapper<T> extends AbstractWrapper<T, String, MyQueryWrapper
@Override @Override
public MyQueryWrapper<T> select(String... columns) { public MyQueryWrapper<T> select(String... columns) {
if (ArrayUtils.isNotEmpty(columns)) { return select(true, columns);
this.sqlSelect.setStringValue(String.join(StringPool.COMMA, 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; return typedThis;
} }
@Override @Override
public MyQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) { public MyQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
super.setEntityClass(entityClass); return select(true, entityClass, predicate);
this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(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; return typedThis;
} }
public final MyQueryWrapper<T> selectAll(Class<T> clazz) { public final MyQueryWrapper<T> selectAll(Class<T> clazz) {
TableInfo info = TableInfoHelper.getTableInfo(clazz); return selectAll(true, clazz);
List<String> list = new ArrayList<>(); }
if (info.havePK()) {
list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn()); public final MyQueryWrapper<T> selectAll(boolean condition, Class<T> clazz) {
} if (condition) {
list.addAll(info.getFieldList().stream().map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i.getColumn()).collect(Collectors.toList())); TableInfo info = TableInfoHelper.getTableInfo(clazz);
String join = String.join(StringPool.COMMA, list); List<String> list = new ArrayList<>();
if (StringUtils.isBlank(sqlSelect.getStringValue())) { if (info.havePK()) {
this.sqlSelect.setStringValue(join); list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn());
} else { }
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join); 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; return typedThis;
} }

View File

@ -15,7 +15,9 @@ import com.github.yulichang.toolkit.MyLambdaUtils;
import com.github.yulichang.wrapper.interfaces.MyLambdaJoin; import com.github.yulichang.wrapper.interfaces.MyLambdaJoin;
import com.github.yulichang.wrapper.interfaces.MySFunctionQuery; 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.concurrent.atomic.AtomicInteger;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -23,7 +25,7 @@ import java.util.stream.Collectors;
/** /**
* copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper} * copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper}
*/ */
@SuppressWarnings("serial") @SuppressWarnings("all")
public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJoinLambdaQueryWrapper<T>> public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJoinLambdaQueryWrapper<T>>
implements MySFunctionQuery<MyJoinLambdaQueryWrapper<T>>, MyLambdaJoin<MyJoinLambdaQueryWrapper<T>> { implements MySFunctionQuery<MyJoinLambdaQueryWrapper<T>>, MyLambdaJoin<MyJoinLambdaQueryWrapper<T>> {
@ -99,7 +101,12 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
*/ */
@SafeVarargs @SafeVarargs
public final <S> MyJoinLambdaQueryWrapper<T> select(SFunction<S, ?>... columns) { 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) { for (SFunction<S, ?> s : columns) {
selectColumns.add(new SelectColumn(MyLambdaUtils.getEntityClass(s), MyLambdaUtils.getColumn(s), null)); selectColumns.add(new SelectColumn(MyLambdaUtils.getEntityClass(s), MyLambdaUtils.getColumn(s), null));
} }
@ -109,30 +116,49 @@ public class MyJoinLambdaQueryWrapper<T> extends MyAbstractLambdaWrapper<T, MyJo
@Override @Override
public <E> MyJoinLambdaQueryWrapper<T> select(Class<E> entityClass, Predicate<TableFieldInfo> predicate) { public <E> MyJoinLambdaQueryWrapper<T> select(Class<E> entityClass, Predicate<TableFieldInfo> predicate) {
TableInfo info = TableInfoHelper.getTableInfo(entityClass); return select(true, entityClass, predicate);
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))); 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; return typedThis;
} }
public final <S, X> MyJoinLambdaQueryWrapper<T> selectAs(SFunction<S, ?> columns, SFunction<X, ?> alias) { 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; return typedThis;
} }
public final MyJoinLambdaQueryWrapper<T> selectAll(Class<?> clazz) { public final MyJoinLambdaQueryWrapper<T> selectAll(Class<?> clazz) {
TableInfo info = TableInfoHelper.getTableInfo(clazz); return selectAll(clazz);
Assert.notNull(info, "table can not be find -> %s", clazz); }
if (info.havePK()) {
selectColumns.add(new SelectColumn(clazz, info.getKeyColumn(), null)); 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; return typedThis;
} }
@Override @Override
public String getSqlSelect() { public String getSqlSelect() {
if (StringUtils.isBlank(sqlSelect.getStringValue())) { if (StringUtils.isBlank(sqlSelect.getStringValue())) {