mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
sql去重 => wrapper.distinct()
This commit is contained in:
parent
8ea32dabfe
commit
2257c9e623
2
pom.xml
2
pom.xml
@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.github.yulichang</groupId>
|
||||
<artifactId>mybatis-plus-join</artifactId>
|
||||
<version>1.2.2</version>
|
||||
<version>1.2.3-SNAPSHOT</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>
|
||||
|
@ -39,7 +39,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
*
|
||||
* @author yulichang
|
||||
*/
|
||||
@Order(Integer.MIN_VALUE)
|
||||
@Intercepts(@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}))
|
||||
public class MPJInterceptor implements Interceptor {
|
||||
private static final Log logger = LogFactory.getLog(MPJInterceptor.class);
|
||||
|
@ -57,4 +57,8 @@ public abstract class MPJAbstractMethod extends AbstractMethod implements MPJBas
|
||||
return SqlScriptUtils.convertIf("${ew.from}", String.format("%s != null and %s != ''", "ew.from", "ew.from"), false);
|
||||
}
|
||||
|
||||
protected String sqlDistinct() {
|
||||
return SqlScriptUtils.convertIf("DISTINCT", "ew.selectDistinct", false);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,26 +15,17 @@ public interface MPJBaseMethod extends Constants {
|
||||
default String mpjSqlWhereEntityWrapper(boolean newLine, TableInfo table) {
|
||||
if (table.isWithLogicDelete()) {
|
||||
String sqlScript = (NEWLINE + getLogicDeleteSql(table, true, true) + NEWLINE);
|
||||
String normalSqlScript = SqlScriptUtils.convertIf(String.format("AND ${%s}", WRAPPER_SQLSEGMENT),
|
||||
String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT,
|
||||
WRAPPER_NONEMPTYOFNORMAL), true);
|
||||
String normalSqlScript = SqlScriptUtils.convertIf(String.format("AND ${%s}", WRAPPER_SQLSEGMENT), String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, WRAPPER_NONEMPTYOFNORMAL), true);
|
||||
normalSqlScript += NEWLINE;
|
||||
normalSqlScript += SqlScriptUtils.convertIf(String.format(" ${%s}", WRAPPER_SQLSEGMENT),
|
||||
String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT,
|
||||
WRAPPER_EMPTYOFNORMAL), true);
|
||||
normalSqlScript += SqlScriptUtils.convertIf(String.format(" ${%s}", WRAPPER_SQLSEGMENT), String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, WRAPPER_EMPTYOFNORMAL), true);
|
||||
sqlScript += normalSqlScript;
|
||||
sqlScript = SqlScriptUtils.convertChoose(String.format("%s != null", WRAPPER), sqlScript,
|
||||
table.getLogicDeleteSql(false, true));
|
||||
sqlScript = SqlScriptUtils.convertChoose(String.format("%s != null", WRAPPER), sqlScript, table.getLogicDeleteSql(false, true));
|
||||
sqlScript = SqlScriptUtils.convertWhere(sqlScript);
|
||||
return newLine ? NEWLINE + sqlScript : sqlScript;
|
||||
} else {
|
||||
String sqlScript = SqlScriptUtils.convertIf(String.format("${%s}", WRAPPER_SQLSEGMENT),
|
||||
String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT,
|
||||
WRAPPER_NONEMPTYOFWHERE), true);
|
||||
String sqlScript = SqlScriptUtils.convertIf(String.format("${%s}", WRAPPER_SQLSEGMENT), String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, WRAPPER_NONEMPTYOFWHERE), true);
|
||||
sqlScript = SqlScriptUtils.convertWhere(sqlScript) + NEWLINE;
|
||||
sqlScript += SqlScriptUtils.convertIf(String.format(" ${%s}", WRAPPER_SQLSEGMENT),
|
||||
String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT,
|
||||
WRAPPER_EMPTYOFWHERE), true);
|
||||
sqlScript += SqlScriptUtils.convertIf(String.format(" ${%s}", WRAPPER_SQLSEGMENT), String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, WRAPPER_EMPTYOFWHERE), true);
|
||||
sqlScript = SqlScriptUtils.convertIf(sqlScript, String.format("%s != null", WRAPPER), true);
|
||||
return newLine ? NEWLINE + sqlScript : sqlScript;
|
||||
}
|
||||
@ -54,14 +45,12 @@ public interface MPJBaseMethod extends Constants {
|
||||
|
||||
|
||||
default String formatLogicDeleteSql(TableInfo tableInfo, boolean isWhere) {
|
||||
final String value = isWhere ? tableInfo.getLogicDeleteFieldInfo().getLogicNotDeleteValue() :
|
||||
tableInfo.getLogicDeleteFieldInfo().getLogicDeleteValue();
|
||||
final String value = isWhere ? tableInfo.getLogicDeleteFieldInfo().getLogicNotDeleteValue() : tableInfo.getLogicDeleteFieldInfo().getLogicDeleteValue();
|
||||
if (isWhere) {
|
||||
if (NULL.equalsIgnoreCase(value)) {
|
||||
return "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + " IS NULL";
|
||||
} else {
|
||||
return "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + EQUALS + String.format(
|
||||
tableInfo.getLogicDeleteFieldInfo().isCharSequence() ? "'%s'" : "%s", value);
|
||||
return "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + EQUALS + String.format(tableInfo.getLogicDeleteFieldInfo().isCharSequence() ? "'%s'" : "%s", value);
|
||||
}
|
||||
}
|
||||
final String targetStr = "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + EQUALS;
|
||||
@ -72,4 +61,8 @@ public interface MPJBaseMethod extends Constants {
|
||||
}
|
||||
}
|
||||
|
||||
default String mpjSqlSelectColumns() {
|
||||
return SqlScriptUtils.convertIf("DISTINCT", "ew.selectDistinct", false);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ public class SelectJoinCount extends MPJAbstractMethod {
|
||||
@Override
|
||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_COUNT;
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlCount(),
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlCount(),
|
||||
tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Integer.class);
|
||||
|
@ -14,7 +14,7 @@ public class SelectJoinList extends MPJAbstractMethod {
|
||||
@Override
|
||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_LIST;
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true),
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||
tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, MPJResultType.class);
|
||||
|
@ -16,7 +16,7 @@ public class SelectJoinMap extends MPJAbstractMethod {
|
||||
@Override
|
||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAP;
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true),
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||
tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class);
|
||||
|
@ -16,7 +16,7 @@ public class SelectJoinMaps extends MPJAbstractMethod {
|
||||
@Override
|
||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAPS;
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true),
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||
tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class);
|
||||
|
@ -16,7 +16,7 @@ public class SelectJoinMapsPage extends MPJAbstractMethod {
|
||||
@Override
|
||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAPS_PAGE;
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true),
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||
tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class);
|
||||
|
@ -14,7 +14,7 @@ public class SelectJoinOne extends MPJAbstractMethod {
|
||||
@Override
|
||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_ONE;
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true),
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||
tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, MPJResultType.class);
|
||||
|
@ -14,7 +14,7 @@ public class SelectJoinPage extends MPJAbstractMethod {
|
||||
@Override
|
||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||
SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_PAGE;
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true),
|
||||
String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlDistinct(), sqlSelectColumns(tableInfo, true),
|
||||
tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment());
|
||||
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
|
||||
return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, MPJResultType.class);
|
||||
|
@ -18,22 +18,22 @@ public enum SqlMethod {
|
||||
"<script>\n%s SELECT COUNT(%s) FROM %s %s %s %s %s\n</script>"),
|
||||
|
||||
SELECT_JOIN_ONE("selectJoinOne", "返回一条记录",
|
||||
"<script>\n%s SELECT %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集合",
|
||||
"<script>\n%s SELECT %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_MAP("selectJoinMap", "返回一个Map",
|
||||
"<script>\n%s SELECT %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集合",
|
||||
"<script>\n%s SELECT %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_PAGE("selectJoinPage", "连表查询并分页",
|
||||
"<script>\n%s SELECT %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_PAGE("selectJoinMapsPage", "返回Map集合并分页",
|
||||
"<script>\n%s SELECT %s FROM %s %s %s %s %s\n</script>");
|
||||
"<script>\n%s SELECT %s %s FROM %s %s %s %s %s\n</script>");
|
||||
|
||||
private final String method;
|
||||
private final String sql;
|
||||
|
@ -2,6 +2,7 @@ package com.github.yulichang.method.mp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.MPJTableInfoHelper;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
||||
import com.github.yulichang.toolkit.Constant;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
@ -22,4 +23,11 @@ public class SelectList extends com.baomidou.mybatisplus.core.injector.methods.S
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
selectColumns, mpjSqlSelectColumns() + StringPool.SPACE + selectColumns);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.github.yulichang.method.mp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.MPJTableInfoHelper;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
||||
import com.github.yulichang.toolkit.Constant;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
@ -22,4 +23,11 @@ public class SelectMaps extends com.baomidou.mybatisplus.core.injector.methods.S
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
selectColumns, mpjSqlSelectColumns() + StringPool.SPACE + selectColumns);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.github.yulichang.method.mp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.MPJTableInfoHelper;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
||||
import com.github.yulichang.toolkit.Constant;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
@ -22,4 +23,11 @@ public class SelectMapsPage extends com.baomidou.mybatisplus.core.injector.metho
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
selectColumns, mpjSqlSelectColumns() + StringPool.SPACE + selectColumns);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.github.yulichang.method.mp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.MPJTableInfoHelper;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
||||
import com.github.yulichang.toolkit.Constant;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
@ -22,4 +23,11 @@ public class SelectObjs extends com.baomidou.mybatisplus.core.injector.methods.S
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
selectColumns, mpjSqlSelectColumns() + StringPool.SPACE + selectColumns);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.github.yulichang.method.mp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.MPJTableInfoHelper;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
||||
import com.github.yulichang.toolkit.Constant;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
@ -27,4 +28,11 @@ public class SelectOne extends com.baomidou.mybatisplus.core.injector.methods.Se
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
selectColumns, mpjSqlSelectColumns() + StringPool.SPACE + selectColumns);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.github.yulichang.method.mp;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.MPJTableInfoHelper;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
||||
import com.github.yulichang.toolkit.Constant;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
@ -22,4 +23,11 @@ public class SelectPage extends com.baomidou.mybatisplus.core.injector.methods.S
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
super.sqlWhereEntityWrapper(newLine, table), mpjSqlWhereEntityWrapper(newLine, table));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String sqlSelectColumns(TableInfo table, boolean queryWrapper) {
|
||||
String selectColumns = super.sqlSelectColumns(table, queryWrapper);
|
||||
return SqlScriptUtils.convertChoose(String.format("%s == null or !%s", Constant.PARAM_TYPE, Constant.PARAM_TYPE),
|
||||
selectColumns, mpjSqlSelectColumns() + StringPool.SPACE + selectColumns);
|
||||
}
|
||||
}
|
||||
|
@ -56,6 +56,11 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
||||
*/
|
||||
private List<String> ignoreColumns = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 是否 select distinct
|
||||
*/
|
||||
private boolean selectDistinct = false;
|
||||
|
||||
|
||||
public MPJQueryWrapper() {
|
||||
super.initNeed();
|
||||
@ -85,6 +90,15 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
||||
this.ignoreColumns = ignoreColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
* sql去重
|
||||
* select distinct
|
||||
*/
|
||||
public MPJQueryWrapper<T> distinct() {
|
||||
this.selectDistinct = true;
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MPJQueryWrapper<T> select(String... columns) {
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
@ -162,6 +176,9 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
||||
return sqlSelect.getStringValue();
|
||||
}
|
||||
|
||||
public boolean getSelectDistinct() {
|
||||
return selectDistinct;
|
||||
}
|
||||
|
||||
public String getFrom() {
|
||||
return from.getStringValue();
|
||||
|
@ -1,14 +0,0 @@
|
||||
package com.github.yulichang.wrapper;
|
||||
|
||||
/**
|
||||
* 名字太长 变更为MPJLambdaWrapper
|
||||
* {@link MPJLambdaWrapper}
|
||||
* 推荐 使用 MPJWrappers.<UserDO>lambdaJoin(); 构造器
|
||||
*
|
||||
* @author yulichang
|
||||
*/
|
||||
@Deprecated
|
||||
public class MPJJoinLambdaQueryWrapper<T> extends MPJLambdaWrapper<T> {
|
||||
|
||||
|
||||
}
|
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.*;
|
||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||
import com.github.yulichang.query.MPJQueryWrapper;
|
||||
import com.github.yulichang.toolkit.Constant;
|
||||
import com.github.yulichang.toolkit.LambdaUtils;
|
||||
import com.github.yulichang.toolkit.MPJWrappers;
|
||||
@ -63,6 +64,11 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
|
||||
*/
|
||||
private final List<SelectColumn> ignoreColumns = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 是否 select distinct
|
||||
*/
|
||||
private boolean selectDistinct = false;
|
||||
|
||||
/**
|
||||
* 表序号
|
||||
*/
|
||||
@ -114,6 +120,16 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
|
||||
this.joinClass = joinClass;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* sql去重
|
||||
* select distinct
|
||||
*/
|
||||
public MPJLambdaWrapper<T> distinct() {
|
||||
this.selectDistinct = true;
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SafeVarargs
|
||||
public final <S> MPJLambdaWrapper<T> select(SFunction<S, ?>... columns) {
|
||||
@ -221,6 +237,11 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
|
||||
return alias.getStringValue();
|
||||
}
|
||||
|
||||
|
||||
public boolean getSelectDistinct() {
|
||||
return selectDistinct;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于生成嵌套 sql
|
||||
* <p>故 sqlSelect 不向下传递</p>
|
||||
|
Loading…
x
Reference in New Issue
Block a user