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
c2e575d83b
commit
13ec6499e4
@ -17,6 +17,7 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 字段属性
|
||||
@ -161,8 +162,9 @@ public class MPJTableFieldInfo {
|
||||
}
|
||||
|
||||
private void initBindField(String bindName) {
|
||||
List<Field> fields = ReflectionKit.getFieldList(ClassUtils.getUserClass(this.joinClass));
|
||||
Field field = fields.stream().filter(f -> f.getName().equals(bindName)).findFirst().orElse(null);
|
||||
Field field = TableInfoHelper.getTableInfo(this.joinClass).getFieldList().stream()
|
||||
.filter(i -> i.getColumn().equals(bindName))
|
||||
.map(TableFieldInfo::getField).findFirst().orElse(null);
|
||||
if (field == null) {
|
||||
throw new MPJException("字段不存在 " + this.joinClass.getName() + " ," + bindName);
|
||||
}
|
||||
|
@ -567,7 +567,6 @@ public class MPJTableInfoHelper {
|
||||
table.setTableName(tableName);
|
||||
return table;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new MPJException("TableInfo 对象拷贝失败 -> " + tableInfo.getEntityType().getName());
|
||||
}
|
||||
}
|
||||
|
@ -66,13 +66,6 @@ public class MPJSqlInjector extends DefaultSqlInjector {
|
||||
new SelectById(),
|
||||
new SelectBatchByIds(),
|
||||
new SelectByMap()
|
||||
// new com.baomidou.mybatisplus.core.injector.methods.SelectOne(),
|
||||
// new com.baomidou.mybatisplus.core.injector.methods.SelectCount(),
|
||||
// new com.baomidou.mybatisplus.core.injector.methods.SelectMaps(),
|
||||
// new com.baomidou.mybatisplus.core.injector.methods.SelectMapsPage(),
|
||||
// new com.baomidou.mybatisplus.core.injector.methods.SelectObjs(),
|
||||
// new com.baomidou.mybatisplus.core.injector.methods.SelectList(),
|
||||
// new com.baomidou.mybatisplus.core.injector.methods.SelectPage()
|
||||
).collect(toList());
|
||||
list.addAll(getJoinMethod());
|
||||
list.addAll(getSelectMethod());
|
||||
|
@ -39,7 +39,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
*
|
||||
* @author yulichang
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@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);
|
||||
@ -53,13 +52,14 @@ public class MPJInterceptor implements Interceptor {
|
||||
private static final Map<String, Map<Configuration, MappedStatement>> MS_CACHE = new ConcurrentHashMap<>();
|
||||
|
||||
@Override
|
||||
@SuppressWarnings({"Java8MapApi", "unchecked"})
|
||||
public Object intercept(Invocation invocation) throws Throwable {
|
||||
Object[] args = invocation.getArgs();
|
||||
if (args[0] instanceof MappedStatement) {
|
||||
MappedStatement ms = (MappedStatement) args[0];
|
||||
if (args[1] instanceof Map) {
|
||||
Map<String, Object> map = (Map<String, Object>) args[1];
|
||||
Object ew = map.get(Constants.WRAPPER);
|
||||
Object ew = map.containsKey(Constants.WRAPPER) ? map.get(Constants.WRAPPER) : null;
|
||||
if (!map.containsKey(Constant.PARAM_TYPE)) {
|
||||
map.put(Constant.PARAM_TYPE, Objects.nonNull(ew) && (ew instanceof MPJBaseJoin));
|
||||
} else {
|
||||
|
@ -17,10 +17,7 @@ import com.github.yulichang.wrapper.interfaces.Func;
|
||||
import com.github.yulichang.wrapper.interfaces.Join;
|
||||
import com.github.yulichang.wrapper.interfaces.on.OnCompare;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.BiPredicate;
|
||||
import java.util.function.Consumer;
|
||||
@ -301,6 +298,17 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R> Children groupBy(boolean condition, List<SFunction<R, ?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
if (CollectionUtils.isNotEmpty(columns)) {
|
||||
String one = (StringPool.COMMA + columnsToString(columns));
|
||||
final String finalOne = one;
|
||||
appendSqlSegments(GROUP_BY, () -> finalOne);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children groupBy(boolean condition, SFunction<X, ?> column, SFunction<X, ?>... columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
@ -313,6 +321,28 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R> Children orderByAsc(boolean condition, List<SFunction<R, ?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
final SqlKeyword mode = ASC;
|
||||
if (CollectionUtils.isNotEmpty(columns)) {
|
||||
columns.forEach(c -> appendSqlSegments(ORDER_BY,
|
||||
columnToSqlSegment(columnSqlInjectFilter(c)), mode));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R> Children orderByDesc(boolean condition, List<SFunction<R, ?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
final SqlKeyword mode = DESC;
|
||||
if (CollectionUtils.isNotEmpty(columns)) {
|
||||
columns.forEach(c -> appendSqlSegments(ORDER_BY,
|
||||
columnToSqlSegment(columnSqlInjectFilter(c)), mode));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children orderBy(boolean condition, boolean isAsc, SFunction<X, ?> column, SFunction<X, ?>... columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
@ -167,6 +168,25 @@ public interface Func<Children> extends Serializable {
|
||||
*/
|
||||
<R> Children notInSql(boolean condition, SFunction<R, ?> column, String inValue);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children groupBy(SFunction<R, ?> column) {
|
||||
return groupBy(true, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children groupBy(List<SFunction<R, ?>> column) {
|
||||
return groupBy(true, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
<R> Children groupBy(boolean condition, List<SFunction<R, ?>> columns);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
@ -185,6 +205,25 @@ public interface Func<Children> extends Serializable {
|
||||
*/
|
||||
<R> Children groupBy(boolean condition, SFunction<R, ?> column, SFunction<R, ?>... columns);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children orderByAsc(SFunction<R, ?> column) {
|
||||
return orderByAsc(true, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children orderByAsc(List<SFunction<R, ?>> columns) {
|
||||
return orderByAsc(true, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
<R> Children orderByAsc(boolean condition, List<SFunction<R, ?>> columns);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
@ -205,6 +244,25 @@ public interface Func<Children> extends Serializable {
|
||||
return orderBy(condition, true, column, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children orderByDesc(SFunction<R, ?> column) {
|
||||
return orderByDesc(true, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children orderByDesc(List<SFunction<R, ?>> columns) {
|
||||
return orderByDesc(true, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
<R> Children orderByDesc(boolean condition, List<SFunction<R, ?>> columns);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user