mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
条件别名优化
This commit is contained in:
parent
e4914429fe
commit
30ba7ac06c
@ -1,16 +1,22 @@
|
|||||||
package com.github.yulichang.method;
|
package com.github.yulichang.method;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.FieldStrategy;
|
import com.baomidou.mybatisplus.annotation.FieldStrategy;
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisPlusVersion;
|
||||||
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
||||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
||||||
import com.github.yulichang.annotation.DynamicTableName;
|
import com.github.yulichang.annotation.DynamicTableName;
|
||||||
import com.github.yulichang.config.ConfigProperties;
|
import com.github.yulichang.config.ConfigProperties;
|
||||||
|
import com.github.yulichang.toolkit.VersionUtils;
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static java.util.stream.Collectors.joining;
|
import static java.util.stream.Collectors.joining;
|
||||||
@ -60,6 +66,33 @@ public interface MPJBaseMethod extends Constants {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* order By
|
||||||
|
*/
|
||||||
|
default String mpjSqlOrderBy(TableInfo tableInfo) {
|
||||||
|
/* 不存在排序字段,直接返回空 */
|
||||||
|
List<TableFieldInfo> orderByFields;
|
||||||
|
try {
|
||||||
|
if (VersionUtils.compare(MybatisPlusVersion.getVersion(), "3.4.3") >= 0) {
|
||||||
|
orderByFields = tableInfo.getOrderByFields();
|
||||||
|
} else {
|
||||||
|
return StringPool.EMPTY;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
return StringPool.EMPTY;
|
||||||
|
}
|
||||||
|
if (CollectionUtils.isEmpty(orderByFields)) {
|
||||||
|
return StringPool.EMPTY;
|
||||||
|
}
|
||||||
|
orderByFields.sort(Comparator.comparingInt(TableFieldInfo::getOrderBySort));
|
||||||
|
String sql = NEWLINE + " ORDER BY " +
|
||||||
|
orderByFields.stream().map(tfi -> String.format("${ew.alias}.%s %s", tfi.getColumn(),
|
||||||
|
tfi.getOrderByType())).collect(joining(","));
|
||||||
|
/* 当wrapper中传递了orderBy属性,@orderBy注解失效 */
|
||||||
|
return SqlScriptUtils.convertIf(sql, String.format("%s == null or %s", WRAPPER,
|
||||||
|
WRAPPER_EXPRESSION_ORDER), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拷贝 tableInfo 里面的 getAllSqlWhere方法
|
* 拷贝 tableInfo 里面的 getAllSqlWhere方法
|
||||||
|
@ -22,10 +22,11 @@ public class SelectJoinList extends MPJAbstractMethod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@SuppressWarnings("DuplicatedCode")
|
||||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_LIST;
|
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_LIST;
|
||||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||||
mpjTableName(tableInfo), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
mpjTableName(tableInfo), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), mpjSqlOrderBy(tableInfo), sqlComment());
|
||||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, MPJResultType.class);
|
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, MPJResultType.class);
|
||||||
}
|
}
|
||||||
|
@ -24,10 +24,11 @@ public class SelectJoinMaps extends MPJAbstractMethod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@SuppressWarnings("DuplicatedCode")
|
||||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAPS;
|
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAPS;
|
||||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||||
mpjTableName(tableInfo), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
mpjTableName(tableInfo), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), mpjSqlOrderBy(tableInfo), sqlComment());
|
||||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class);
|
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class);
|
||||||
}
|
}
|
||||||
|
@ -24,10 +24,11 @@ public class SelectJoinMapsPage extends MPJAbstractMethod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@SuppressWarnings("DuplicatedCode")
|
||||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAPS_PAGE;
|
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAPS_PAGE;
|
||||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||||
mpjTableName(tableInfo), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
mpjTableName(tableInfo), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), mpjSqlOrderBy(tableInfo), sqlComment());
|
||||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class);
|
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class);
|
||||||
}
|
}
|
||||||
|
@ -22,10 +22,11 @@ public class SelectJoinPage extends MPJAbstractMethod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@SuppressWarnings("DuplicatedCode")
|
||||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_PAGE;
|
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_PAGE;
|
||||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||||
mpjTableName(tableInfo), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
mpjTableName(tableInfo), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), mpjSqlOrderBy(tableInfo), sqlComment());
|
||||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, MPJResultType.class);
|
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, MPJResultType.class);
|
||||||
}
|
}
|
||||||
|
@ -20,19 +20,19 @@ public enum SqlMethod {
|
|||||||
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s\n</script>"),
|
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s\n</script>"),
|
||||||
|
|
||||||
SELECT_JOIN_LIST("selectJoinList", "返回List集合",
|
SELECT_JOIN_LIST("selectJoinList", "返回List集合",
|
||||||
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s\n</script>"),
|
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s %s\n</script>"),
|
||||||
|
|
||||||
SELECT_JOIN_MAP("selectJoinMap", "返回一个Map",
|
SELECT_JOIN_MAP("selectJoinMap", "返回一个Map",
|
||||||
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s\n</script>"),
|
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s\n</script>"),
|
||||||
|
|
||||||
SELECT_JOIN_MAPS("selectJoinMaps", "返回Map集合",
|
SELECT_JOIN_MAPS("selectJoinMaps", "返回Map集合",
|
||||||
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s\n</script>"),
|
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s %s\n</script>"),
|
||||||
|
|
||||||
SELECT_JOIN_PAGE("selectJoinPage", "连表查询并分页",
|
SELECT_JOIN_PAGE("selectJoinPage", "连表查询并分页",
|
||||||
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s\n</script>"),
|
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s %s\n</script>"),
|
||||||
|
|
||||||
SELECT_JOIN_MAPS_PAGE("selectJoinMapsPage", "返回Map集合并分页",
|
SELECT_JOIN_MAPS_PAGE("selectJoinMapsPage", "返回Map集合并分页",
|
||||||
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s\n</script>");
|
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s %s\n</script>");
|
||||||
|
|
||||||
private final String method;
|
private final String method;
|
||||||
private final String sql;
|
private final String sql;
|
||||||
|
@ -34,6 +34,12 @@ public class SelectList extends com.baomidou.mybatisplus.core.injector.methods.S
|
|||||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String sqlOrderBy(TableInfo table) {
|
||||||
|
return SqlScriptUtils.convertChoose(String.format("%s == null or !(%s instanceof %s)", Constants.WRAPPER, Constants.WRAPPER, MPJBaseJoin.class.getName()),
|
||||||
|
super.sqlOrderBy(table), mpjSqlOrderBy(table));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||||
|
@ -34,6 +34,12 @@ public class SelectMaps extends com.baomidou.mybatisplus.core.injector.methods.S
|
|||||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String sqlOrderBy(TableInfo table) {
|
||||||
|
return SqlScriptUtils.convertChoose(String.format("%s == null or !(%s instanceof %s)", Constants.WRAPPER, Constants.WRAPPER, MPJBaseJoin.class.getName()),
|
||||||
|
super.sqlOrderBy(table), mpjSqlOrderBy(table));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||||
|
@ -34,6 +34,12 @@ public class SelectMapsPage extends com.baomidou.mybatisplus.core.injector.metho
|
|||||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String sqlOrderBy(TableInfo table) {
|
||||||
|
return SqlScriptUtils.convertChoose(String.format("%s == null or !(%s instanceof %s)", Constants.WRAPPER, Constants.WRAPPER, MPJBaseJoin.class.getName()),
|
||||||
|
super.sqlOrderBy(table), mpjSqlOrderBy(table));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||||
|
@ -34,6 +34,12 @@ public class SelectPage extends com.baomidou.mybatisplus.core.injector.methods.S
|
|||||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String sqlOrderBy(TableInfo table) {
|
||||||
|
return SqlScriptUtils.convertChoose(String.format("%s == null or !(%s instanceof %s)", Constants.WRAPPER, Constants.WRAPPER, MPJBaseJoin.class.getName()),
|
||||||
|
super.sqlOrderBy(table), mpjSqlOrderBy(table));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||||
|
@ -6,7 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.Query;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
|
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
|
||||||
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
||||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.*;
|
import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||||
import com.github.yulichang.config.ConfigProperties;
|
import com.github.yulichang.config.ConfigProperties;
|
||||||
import com.github.yulichang.query.interfaces.StringJoin;
|
import com.github.yulichang.query.interfaces.StringJoin;
|
||||||
@ -72,7 +75,7 @@ public class MPJLambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, MPJLambda
|
|||||||
MPJLambdaQueryWrapper(T entity, Class<T> entityClass, SharedString from, SharedString sqlSelect, AtomicInteger paramNameSeq,
|
MPJLambdaQueryWrapper(T entity, Class<T> entityClass, SharedString from, SharedString sqlSelect, AtomicInteger paramNameSeq,
|
||||||
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
|
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
|
||||||
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst,
|
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst,
|
||||||
List<String> selectColumns, List<String> ignoreColumns) {
|
List<String> selectColumns, List<String> ignoreColumns, boolean selectDistinct) {
|
||||||
super.setEntity(entity);
|
super.setEntity(entity);
|
||||||
super.setEntityClass(entityClass);
|
super.setEntityClass(entityClass);
|
||||||
this.paramNameSeq = paramNameSeq;
|
this.paramNameSeq = paramNameSeq;
|
||||||
@ -85,6 +88,7 @@ public class MPJLambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, MPJLambda
|
|||||||
this.sqlFirst = sqlFirst;
|
this.sqlFirst = sqlFirst;
|
||||||
this.selectColumns = selectColumns;
|
this.selectColumns = selectColumns;
|
||||||
this.ignoreColumns = ignoreColumns;
|
this.ignoreColumns = ignoreColumns;
|
||||||
|
this.selectDistinct = selectDistinct;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -200,7 +204,7 @@ public class MPJLambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, MPJLambda
|
|||||||
*/
|
*/
|
||||||
public MPJQueryWrapper<T> stringQuery() {
|
public MPJQueryWrapper<T> stringQuery() {
|
||||||
return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs,
|
return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs,
|
||||||
expression, sqlSelect, from, lastSql, sqlComment, sqlFirst, selectColumns, ignoreColumns);
|
expression, sqlSelect, from, lastSql, sqlComment, sqlFirst, selectColumns, ignoreColumns, selectDistinct);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -243,7 +247,7 @@ public class MPJLambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, MPJLambda
|
|||||||
@Override
|
@Override
|
||||||
protected MPJLambdaQueryWrapper<T> instance() {
|
protected MPJLambdaQueryWrapper<T> instance() {
|
||||||
return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs,
|
return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs,
|
||||||
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), null, null);
|
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), null, null, selectDistinct);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -98,7 +98,7 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
|||||||
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
|
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
|
||||||
SharedString sqlSelect, SharedString from, SharedString lastSql,
|
SharedString sqlSelect, SharedString from, SharedString lastSql,
|
||||||
SharedString sqlComment, SharedString sqlFirst,
|
SharedString sqlComment, SharedString sqlFirst,
|
||||||
List<String> selectColumns, List<String> ignoreColumns) {
|
List<String> selectColumns, List<String> ignoreColumns, boolean selectDistinct) {
|
||||||
super.setEntity(entity);
|
super.setEntity(entity);
|
||||||
super.setEntityClass(entityClass);
|
super.setEntityClass(entityClass);
|
||||||
this.paramNameSeq = paramNameSeq;
|
this.paramNameSeq = paramNameSeq;
|
||||||
@ -111,6 +111,7 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
|||||||
this.sqlFirst = sqlFirst;
|
this.sqlFirst = sqlFirst;
|
||||||
this.selectColumns = selectColumns;
|
this.selectColumns = selectColumns;
|
||||||
this.ignoreColumns = ignoreColumns;
|
this.ignoreColumns = ignoreColumns;
|
||||||
|
this.selectDistinct = selectDistinct;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -295,7 +296,7 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
|||||||
*/
|
*/
|
||||||
public MPJLambdaQueryWrapper<T> lambda() {
|
public MPJLambdaQueryWrapper<T> lambda() {
|
||||||
return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), from, sqlSelect, paramNameSeq, paramNameValuePairs,
|
return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), from, sqlSelect, paramNameSeq, paramNameValuePairs,
|
||||||
expression, lastSql, sqlComment, sqlFirst, selectColumns, ignoreColumns);
|
expression, lastSql, sqlComment, sqlFirst, selectColumns, ignoreColumns, selectDistinct);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -305,7 +306,7 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
|||||||
@Override
|
@Override
|
||||||
protected MPJQueryWrapper<T> instance() {
|
protected MPJQueryWrapper<T> instance() {
|
||||||
return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(),
|
return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(),
|
||||||
null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), null, null);
|
null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), null, null, selectDistinct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,6 +38,13 @@ public class JoinWrappers {
|
|||||||
return new MPJLambdaWrapper<>();
|
return new MPJLambdaWrapper<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JoinWrappers.<UserDO>lambda("t")
|
||||||
|
*/
|
||||||
|
public static <T> MPJLambdaWrapper<T> lambda(String alias) {
|
||||||
|
return new MPJLambdaWrapper<>(alias);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JoinWrappers.lambda(User.class)
|
* JoinWrappers.lambda(User.class)
|
||||||
*/
|
*/
|
||||||
@ -45,10 +52,24 @@ public class JoinWrappers {
|
|||||||
return new MPJLambdaWrapper<>(clazz);
|
return new MPJLambdaWrapper<>(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JoinWrappers.lambda("t", User.class)
|
||||||
|
*/
|
||||||
|
public static <T> MPJLambdaWrapper<T> lambda(String alias, Class<T> clazz) {
|
||||||
|
return new MPJLambdaWrapper<T>(alias).setEntityClass(clazz);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JoinWrappers.lambda(user)
|
* JoinWrappers.lambda(user)
|
||||||
*/
|
*/
|
||||||
public static <T> MPJLambdaWrapper<T> lambda(T entity) {
|
public static <T> MPJLambdaWrapper<T> lambda(T entity) {
|
||||||
return new MPJLambdaWrapper<>(entity);
|
return new MPJLambdaWrapper<>(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JoinWrappers.lambda("t", user)
|
||||||
|
*/
|
||||||
|
public static <T> MPJLambdaWrapper<T> lambda(String alias, T entity) {
|
||||||
|
return new MPJLambdaWrapper<T>(alias).setEntity(entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.github.yulichang.toolkit;
|
package com.github.yulichang.toolkit;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -92,18 +93,14 @@ public class TableList {
|
|||||||
public String getPrefixOther(Integer index, Class<?> clazz) {
|
public String getPrefixOther(Integer index, Class<?> clazz) {
|
||||||
if (Objects.isNull(index)) {
|
if (Objects.isNull(index)) {
|
||||||
List<Node> list = getByClass(clazz);
|
List<Node> list = getByClass(clazz);
|
||||||
if (list.size() == 1 && list.get(0).getClazz() == clazz) {
|
if (CollectionUtils.isNotEmpty(list)) {
|
||||||
return alias;
|
|
||||||
} else if (list.size() > 1) {
|
|
||||||
for (Node n : list) {
|
for (Node n : list) {
|
||||||
if (n.getClazz() == clazz) {
|
if (n.getClazz() == clazz) {
|
||||||
return n.isHasAlias() ? n.getAlias() : (n.getAlias() + n.getIndex());
|
return n.isHasAlias() ? n.getAlias() : (n.getAlias() + n.getIndex());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return alias;
|
|
||||||
} else {
|
|
||||||
return alias;
|
|
||||||
}
|
}
|
||||||
|
return alias;
|
||||||
}
|
}
|
||||||
Node node = getByIndex(index);
|
Node node = getByIndex(index);
|
||||||
Node dg = dg(node, node.getClazz());
|
Node dg = dg(node, node.getClazz());
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package com.github.yulichang.wrapper;
|
package com.github.yulichang.wrapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.OrderBy;
|
||||||
import com.baomidou.mybatisplus.core.conditions.SharedString;
|
import com.baomidou.mybatisplus.core.conditions.SharedString;
|
||||||
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
|
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
|
||||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||||
import com.github.yulichang.config.ConfigProperties;
|
import com.github.yulichang.config.ConfigProperties;
|
||||||
import com.github.yulichang.config.enums.LogicDelTypeEnum;
|
import com.github.yulichang.config.enums.LogicDelTypeEnum;
|
||||||
@ -160,6 +163,21 @@ public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否使用默认注解 {@link OrderBy} 排序
|
||||||
|
*
|
||||||
|
* @return true 使用 false 不使用
|
||||||
|
*/
|
||||||
|
public boolean isUseAnnotationOrderBy() {
|
||||||
|
final String _sqlSegment = this.getSqlSegment();
|
||||||
|
if (StringUtils.isBlank(_sqlSegment)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
final String _sqlSegmentToUpperCase = _sqlSegment.toUpperCase();
|
||||||
|
return !(_sqlSegmentToUpperCase.contains(Constants.ORDER_BY)
|
||||||
|
|| _sqlSegmentToUpperCase.contains(Constants.LIMIT));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 必要的初始化
|
* 必要的初始化
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user