mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
update和delete添加链式调用
This commit is contained in:
parent
34e4acdc6a
commit
3ed76b8ca0
@ -332,8 +332,7 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
|
|||||||
for (Children wrapper : onWrappers) {
|
for (Children wrapper : onWrappers) {
|
||||||
if (StringUtils.isBlank(wrapper.from.getStringValue())) {
|
if (StringUtils.isBlank(wrapper.from.getStringValue())) {
|
||||||
if (this.subLogicSql && this.logicDelType == LogicDelTypeEnum.ON) {
|
if (this.subLogicSql && this.logicDelType == LogicDelTypeEnum.ON) {
|
||||||
TableInfo tableInfo = TableHelper.get(wrapper.getJoinClass());
|
TableInfo tableInfo = TableHelper.getAssert(wrapper.getJoinClass());
|
||||||
Asserts.hasTable(tableInfo, wrapper.getJoinClass());
|
|
||||||
if (ConfigProperties.tableInfoAdapter.mpjHasLogic(tableInfo)) {
|
if (ConfigProperties.tableInfoAdapter.mpjHasLogic(tableInfo)) {
|
||||||
wrapper.appendSqlSegments(APPLY, () -> LogicInfoUtils.getLogicInfoNoAnd(
|
wrapper.appendSqlSegments(APPLY, () -> LogicInfoUtils.getLogicInfoNoAnd(
|
||||||
wrapper.getIndex(), wrapper.getJoinClass(), wrapper.isHasAlias(), wrapper.getAlias()
|
wrapper.getIndex(), wrapper.getJoinClass(), wrapper.isHasAlias(), wrapper.getAlias()
|
||||||
@ -368,8 +367,7 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
|
|||||||
public Children join(String keyWord, Class<?> clazz, String tableAlias, BiConsumer<KtAbstractLambdaWrapper<?, ?>, Children> consumer) {
|
public Children join(String keyWord, Class<?> clazz, String tableAlias, BiConsumer<KtAbstractLambdaWrapper<?, ?>, Children> consumer) {
|
||||||
Integer oldIndex = this.getIndex();
|
Integer oldIndex = this.getIndex();
|
||||||
int newIndex = tableIndex;
|
int newIndex = tableIndex;
|
||||||
TableInfo info = TableHelper.get(clazz);
|
TableInfo info = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(info, clazz);
|
|
||||||
Children instance = instance(newIndex, keyWord, clazz, info.getTableName());
|
Children instance = instance(newIndex, keyWord, clazz, info.getTableName());
|
||||||
instance.isNo = true;
|
instance.isNo = true;
|
||||||
instance.isMain = false;
|
instance.isMain = false;
|
||||||
|
@ -5,10 +5,10 @@ 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.*;
|
import com.baomidou.mybatisplus.core.toolkit.*;
|
||||||
import com.github.yulichang.adapter.AdapterHelper;
|
import com.github.yulichang.adapter.AdapterHelper;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.LogicInfoUtils;
|
import com.github.yulichang.toolkit.LogicInfoUtils;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
import com.github.yulichang.toolkit.TableList;
|
import com.github.yulichang.toolkit.TableList;
|
||||||
|
import com.github.yulichang.wrapper.interfaces.DeleteChain;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -22,7 +22,7 @@ import java.util.stream.Collectors;
|
|||||||
* @since 1.4.5
|
* @since 1.4.5
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unused", "DuplicatedCode"})
|
@SuppressWarnings({"unused", "DuplicatedCode"})
|
||||||
public class KtDeleteJoinWrapper<T> extends KtAbstractLambdaWrapper<T, KtDeleteJoinWrapper<T>> {
|
public class KtDeleteJoinWrapper<T> extends KtAbstractLambdaWrapper<T, KtDeleteJoinWrapper<T>> implements DeleteChain<T> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除表
|
* 删除表
|
||||||
@ -166,21 +166,19 @@ public class KtDeleteJoinWrapper<T> extends KtAbstractLambdaWrapper<T, KtDeleteJ
|
|||||||
|
|
||||||
private void check(List<Class<?>> classList) {
|
private void check(List<Class<?>> classList) {
|
||||||
Class<T> entityClass = getEntityClass();
|
Class<T> entityClass = getEntityClass();
|
||||||
TableInfo tableInfo = TableHelper.get(entityClass);
|
TableInfo tableInfo = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(tableInfo, entityClass);
|
|
||||||
//检查
|
//检查
|
||||||
boolean mainLogic = AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo);
|
boolean mainLogic = AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo);
|
||||||
boolean check = classList.stream().allMatch(t -> {
|
boolean check = classList.stream().allMatch(t -> {
|
||||||
TableInfo ti = TableHelper.get(t);
|
TableInfo ti = TableHelper.getAssert(t);
|
||||||
Asserts.hasTable(ti, t);
|
|
||||||
return mainLogic == AdapterHelper.getTableInfoAdapter().mpjHasLogic(ti);
|
return mainLogic == AdapterHelper.getTableInfoAdapter().mpjHasLogic(ti);
|
||||||
});
|
});
|
||||||
if (!check) {
|
if (!check) {
|
||||||
throw ExceptionUtils.mpe("连表删除只适用于全部表(主表和副表)都是物理删除或全部都是逻辑删除, " +
|
throw ExceptionUtils.mpe("连表删除只适用于全部表(主表和副表)都是物理删除或全部都是逻辑删除, " +
|
||||||
"不支持同时存在物理删除和逻辑删除 [物理删除->(%s)] [逻辑删除->(%s)]",
|
"不支持同时存在物理删除和逻辑删除 [物理删除->(%s)] [逻辑删除->(%s)]",
|
||||||
classList.stream().filter(t -> !AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.get(t)))
|
classList.stream().filter(t -> !AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.getAssert(t)))
|
||||||
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)),
|
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)),
|
||||||
classList.stream().filter(t -> AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.get(t)))
|
classList.stream().filter(t -> AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.getAssert(t)))
|
||||||
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)));
|
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,10 +7,10 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.*;
|
import com.baomidou.mybatisplus.core.toolkit.*;
|
||||||
import com.github.yulichang.adapter.AdapterHelper;
|
import com.github.yulichang.adapter.AdapterHelper;
|
||||||
import com.github.yulichang.kt.interfaces.Update;
|
import com.github.yulichang.kt.interfaces.Update;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.KtUtils;
|
import com.github.yulichang.toolkit.KtUtils;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
import com.github.yulichang.toolkit.TableList;
|
import com.github.yulichang.toolkit.TableList;
|
||||||
|
import com.github.yulichang.wrapper.interfaces.UpdateChain;
|
||||||
import kotlin.reflect.KProperty;
|
import kotlin.reflect.KProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -29,7 +29,7 @@ import java.util.stream.Collectors;
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unused", "DuplicatedCode"})
|
@SuppressWarnings({"unused", "DuplicatedCode"})
|
||||||
public class KtUpdateJoinWrapper<T> extends KtAbstractLambdaWrapper<T, KtUpdateJoinWrapper<T>>
|
public class KtUpdateJoinWrapper<T> extends KtAbstractLambdaWrapper<T, KtUpdateJoinWrapper<T>>
|
||||||
implements Update<KtUpdateJoinWrapper<T>> {
|
implements Update<KtUpdateJoinWrapper<T>>, UpdateChain<T> {
|
||||||
/**
|
/**
|
||||||
* SQL 更新字段内容,例如:name='1', age=2
|
* SQL 更新字段内容,例如:name='1', age=2
|
||||||
*/
|
*/
|
||||||
@ -199,8 +199,7 @@ public class KtUpdateJoinWrapper<T> extends KtAbstractLambdaWrapper<T, KtUpdateJ
|
|||||||
private void getSqlByEntity(StringBuilder sb, boolean filterNull, List<Object> entityList) {
|
private void getSqlByEntity(StringBuilder sb, boolean filterNull, List<Object> entityList) {
|
||||||
for (Object obj : entityList) {
|
for (Object obj : entityList) {
|
||||||
Assert.isTrue(tableList.contain(obj.getClass()), "更新的实体不是主表或关联表 <%>", obj.getClass().getSimpleName());
|
Assert.isTrue(tableList.contain(obj.getClass()), "更新的实体不是主表或关联表 <%>", obj.getClass().getSimpleName());
|
||||||
TableInfo tableInfo = TableHelper.get(obj.getClass());
|
TableInfo tableInfo = TableHelper.getAssert(obj.getClass());
|
||||||
Asserts.hasTable(tableInfo, obj.getClass());
|
|
||||||
for (TableFieldInfo fieldInfo : tableInfo.getFieldList()) {
|
for (TableFieldInfo fieldInfo : tableInfo.getFieldList()) {
|
||||||
if (AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo) && fieldInfo.isLogicDelete()) {
|
if (AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo) && fieldInfo.isLogicDelete()) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -4,7 +4,6 @@ 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.Constants;
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import com.github.yulichang.kt.segments.FuncArgs;
|
import com.github.yulichang.kt.segments.FuncArgs;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.KtUtils;
|
import com.github.yulichang.toolkit.KtUtils;
|
||||||
import com.github.yulichang.toolkit.MPJReflectionKit;
|
import com.github.yulichang.toolkit.MPJReflectionKit;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
@ -53,8 +52,7 @@ public interface Query<Children> extends Serializable {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
default Children select(Class<?> entityClass, Predicate<TableFieldInfo> predicate) {
|
default Children select(Class<?> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||||
TableInfo info = TableHelper.get(entityClass);
|
TableInfo info = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(info, entityClass);
|
|
||||||
Map<String, SelectCache> cacheMap = ColumnCache.getMapField(entityClass);
|
Map<String, SelectCache> cacheMap = ColumnCache.getMapField(entityClass);
|
||||||
info.getFieldList().stream().filter(predicate).collect(Collectors.toList()).forEach(
|
info.getFieldList().stream().filter(predicate).collect(Collectors.toList()).forEach(
|
||||||
i -> getSelectColum().add(new SelectNormal(cacheMap.get(i.getProperty()), getIndex(), isHasAlias(), getAlias())));
|
i -> getSelectColum().add(new SelectNormal(cacheMap.get(i.getProperty()), getIndex(), isHasAlias(), getAlias())));
|
||||||
@ -73,8 +71,7 @@ public interface Query<Children> extends Serializable {
|
|||||||
* @return children
|
* @return children
|
||||||
*/
|
*/
|
||||||
default Children selectFilter(Class<?> entityClass, Predicate<SelectCache> predicate) {
|
default Children selectFilter(Class<?> entityClass, Predicate<SelectCache> predicate) {
|
||||||
TableInfo info = TableHelper.get(entityClass);
|
TableInfo info = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(info, entityClass);
|
|
||||||
List<SelectCache> cacheList = ColumnCache.getListField(entityClass);
|
List<SelectCache> cacheList = ColumnCache.getListField(entityClass);
|
||||||
cacheList.stream().filter(predicate).collect(Collectors.toList()).forEach(
|
cacheList.stream().filter(predicate).collect(Collectors.toList()).forEach(
|
||||||
i -> getSelectColum().add(new SelectNormal(i, getIndex(), isHasAlias(), getAlias())));
|
i -> getSelectColum().add(new SelectNormal(i, getIndex(), isHasAlias(), getAlias())));
|
||||||
|
@ -3,7 +3,6 @@ package com.github.yulichang.kt.resultmap;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.KtUtils;
|
import com.github.yulichang.toolkit.KtUtils;
|
||||||
import com.github.yulichang.toolkit.MPJReflectionKit;
|
import com.github.yulichang.toolkit.MPJReflectionKit;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
@ -145,7 +144,7 @@ public class MybatisLabel<E, T> implements Label<T> {
|
|||||||
/**
|
/**
|
||||||
* 嵌套
|
* 嵌套
|
||||||
*/
|
*/
|
||||||
public Builder<E, T> collection(String prefix, Class<?> entityClass, KProperty<?> func) {
|
public Builder<E, T> collection(String prefix, Class<?> entityClass, KProperty<?> func) {
|
||||||
String dtoFieldName = func.getName();
|
String dtoFieldName = func.getName();
|
||||||
Map<String, FieldCache> fieldMap = MPJReflectionKit.getFieldMap(KtUtils.ref(func));
|
Map<String, FieldCache> fieldMap = MPJReflectionKit.getFieldMap(KtUtils.ref(func));
|
||||||
FieldCache field = fieldMap.get(dtoFieldName);
|
FieldCache field = fieldMap.get(dtoFieldName);
|
||||||
@ -254,8 +253,7 @@ public class MybatisLabel<E, T> implements Label<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void autoBuild(boolean auto, Class<E> entityClass, Class<T> tagClass) {
|
private void autoBuild(boolean auto, Class<E> entityClass, Class<T> tagClass) {
|
||||||
TableInfo tableInfo = TableHelper.get(entityClass);
|
TableInfo tableInfo = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(tableInfo, entityClass);
|
|
||||||
Map<String, FieldCache> tagMap = MPJReflectionKit.getFieldMap(tagClass);
|
Map<String, FieldCache> tagMap = MPJReflectionKit.getFieldMap(tagClass);
|
||||||
if (auto && !tagMap.isEmpty()) {
|
if (auto && !tagMap.isEmpty()) {
|
||||||
List<SelectCache> listField = ColumnCache.getListField(entityClass);
|
List<SelectCache> listField = ColumnCache.getListField(entityClass);
|
||||||
|
@ -11,7 +11,6 @@ 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.CompareIfExists;
|
import com.github.yulichang.query.interfaces.CompareIfExists;
|
||||||
import com.github.yulichang.query.interfaces.StringJoin;
|
import com.github.yulichang.query.interfaces.StringJoin;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
import com.github.yulichang.toolkit.ThrowOptional;
|
import com.github.yulichang.toolkit.ThrowOptional;
|
||||||
import com.github.yulichang.wrapper.enums.IfExistsSqlKeyWordEnum;
|
import com.github.yulichang.wrapper.enums.IfExistsSqlKeyWordEnum;
|
||||||
@ -194,8 +193,7 @@ public class MPJLambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, MPJLambda
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public MPJLambdaQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
|
public MPJLambdaQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||||
TableInfo info = TableHelper.get(entityClass);
|
TableInfo info = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(info, entityClass);
|
|
||||||
selectColumns.addAll(info.getFieldList().stream().filter(predicate).map(c ->
|
selectColumns.addAll(info.getFieldList().stream().filter(predicate).map(c ->
|
||||||
alias + StringPool.DOT + c.getColumn()).collect(Collectors.toList()));
|
alias + StringPool.DOT + c.getColumn()).collect(Collectors.toList()));
|
||||||
return typedThis;
|
return typedThis;
|
||||||
@ -219,8 +217,7 @@ public class MPJLambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, MPJLambda
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("DuplicatedCode")
|
@SuppressWarnings("DuplicatedCode")
|
||||||
public final MPJLambdaQueryWrapper<T> selectAll(Class<?> clazz, String as) {
|
public final MPJLambdaQueryWrapper<T> selectAll(Class<?> clazz, String as) {
|
||||||
TableInfo info = TableHelper.get(clazz);
|
TableInfo info = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(info, clazz);
|
|
||||||
if (info.havePK()) {
|
if (info.havePK()) {
|
||||||
selectColumns.add(as + StringPool.DOT + info.getKeyColumn());
|
selectColumns.add(as + StringPool.DOT + info.getKeyColumn());
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,6 @@ import com.github.yulichang.adapter.base.tookit.VersionUtils;
|
|||||||
import com.github.yulichang.config.ConfigProperties;
|
import com.github.yulichang.config.ConfigProperties;
|
||||||
import com.github.yulichang.query.interfaces.CompareIfExists;
|
import com.github.yulichang.query.interfaces.CompareIfExists;
|
||||||
import com.github.yulichang.query.interfaces.StringJoin;
|
import com.github.yulichang.query.interfaces.StringJoin;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.MPJSqlInjectionUtils;
|
import com.github.yulichang.toolkit.MPJSqlInjectionUtils;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
import com.github.yulichang.toolkit.ThrowOptional;
|
import com.github.yulichang.toolkit.ThrowOptional;
|
||||||
@ -215,8 +214,7 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public MPJQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
|
public MPJQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||||
TableInfo info = TableHelper.get(entityClass);
|
TableInfo info = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(info, entityClass);
|
|
||||||
selectColumns.addAll(info.getFieldList().stream().filter(predicate).map(c ->
|
selectColumns.addAll(info.getFieldList().stream().filter(predicate).map(c ->
|
||||||
alias + StringPool.DOT + c.getSqlSelect()).collect(Collectors.toList()));
|
alias + StringPool.DOT + c.getSqlSelect()).collect(Collectors.toList()));
|
||||||
return typedThis;
|
return typedThis;
|
||||||
@ -240,8 +238,7 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings({"DuplicatedCode", "UnusedReturnValue"})
|
@SuppressWarnings({"DuplicatedCode", "UnusedReturnValue"})
|
||||||
public final MPJQueryWrapper<T> selectAll(Class<?> clazz, String as) {
|
public final MPJQueryWrapper<T> selectAll(Class<?> clazz, String as) {
|
||||||
TableInfo info = TableHelper.get(clazz);
|
TableInfo info = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(info, clazz);
|
|
||||||
if (ConfigProperties.tableInfoAdapter.mpjHasPK(info)) {
|
if (ConfigProperties.tableInfoAdapter.mpjHasPK(info)) {
|
||||||
selectColumns.add(as + StringPool.DOT + info.getKeySqlSelect());
|
selectColumns.add(as + StringPool.DOT + info.getKeySqlSelect());
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,7 @@ import java.util.Optional;
|
|||||||
public class KtWrapperUtils {
|
public class KtWrapperUtils {
|
||||||
|
|
||||||
public static String buildSubSqlByWrapper(Class<?> clazz, KtLambdaWrapper<?> wrapper, String alias) {
|
public static String buildSubSqlByWrapper(Class<?> clazz, KtLambdaWrapper<?> wrapper, String alias) {
|
||||||
TableInfo tableInfo = TableHelper.get(clazz);
|
TableInfo tableInfo = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(tableInfo, clazz);
|
|
||||||
String first = Optional.ofNullable(wrapper.getSqlFirst()).orElse(StringPool.EMPTY);
|
String first = Optional.ofNullable(wrapper.getSqlFirst()).orElse(StringPool.EMPTY);
|
||||||
boolean hasWhere = false;
|
boolean hasWhere = false;
|
||||||
String entityWhere = getEntitySql(tableInfo, wrapper);
|
String entityWhere = getEntitySql(tableInfo, wrapper);
|
||||||
@ -54,8 +53,7 @@ public class KtWrapperUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String buildUnionSqlByWrapper(Class<?> clazz, KtLambdaWrapper<?> wrapper) {
|
public static String buildUnionSqlByWrapper(Class<?> clazz, KtLambdaWrapper<?> wrapper) {
|
||||||
TableInfo tableInfo = TableHelper.get(clazz);
|
TableInfo tableInfo = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(tableInfo, clazz);
|
|
||||||
String first = Optional.ofNullable(wrapper.getSqlFirst()).orElse(StringPool.EMPTY);
|
String first = Optional.ofNullable(wrapper.getSqlFirst()).orElse(StringPool.EMPTY);
|
||||||
boolean hasWhere = false;
|
boolean hasWhere = false;
|
||||||
String entityWhere = getEntitySql(tableInfo, wrapper);
|
String entityWhere = getEntitySql(tableInfo, wrapper);
|
||||||
|
@ -53,8 +53,7 @@ public class LogicInfoUtils implements Constants {
|
|||||||
|
|
||||||
private static String getLogicStr(String prefix, Class<?> clazz, boolean and, boolean invert) {
|
private static String getLogicStr(String prefix, Class<?> clazz, boolean and, boolean invert) {
|
||||||
String logicStr;
|
String logicStr;
|
||||||
TableInfo tableInfo = TableHelper.get(clazz);
|
TableInfo tableInfo = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(tableInfo, clazz);
|
|
||||||
TableFieldInfo logicField = ConfigProperties.tableInfoAdapter.mpjGetLogicField(tableInfo);
|
TableFieldInfo logicField = ConfigProperties.tableInfoAdapter.mpjGetLogicField(tableInfo);
|
||||||
if (ConfigProperties.tableInfoAdapter.mpjHasLogic(tableInfo) && Objects.nonNull(logicField)) {
|
if (ConfigProperties.tableInfoAdapter.mpjHasLogic(tableInfo) && Objects.nonNull(logicField)) {
|
||||||
final String notDeleteValue = logicField.getLogicNotDeleteValue();
|
final String notDeleteValue = logicField.getLogicNotDeleteValue();
|
||||||
|
@ -63,4 +63,11 @@ public class TableHelper {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static TableInfo getAssert(Class<?> clazz) {
|
||||||
|
Objects.requireNonNull(clazz);
|
||||||
|
TableInfo tableInfo = get(clazz);
|
||||||
|
Asserts.hasTable(tableInfo, clazz);
|
||||||
|
return tableInfo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,7 @@ import java.util.Optional;
|
|||||||
public class WrapperUtils {
|
public class WrapperUtils {
|
||||||
|
|
||||||
public static <T> String buildSubSqlByWrapper(Class<T> clazz, MPJLambdaWrapper<T> wrapper, String alias) {
|
public static <T> String buildSubSqlByWrapper(Class<T> clazz, MPJLambdaWrapper<T> wrapper, String alias) {
|
||||||
TableInfo tableInfo = TableHelper.get(clazz);
|
TableInfo tableInfo = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(tableInfo, clazz);
|
|
||||||
String first = Optional.ofNullable(wrapper.getSqlFirst()).orElse(StringPool.EMPTY);
|
String first = Optional.ofNullable(wrapper.getSqlFirst()).orElse(StringPool.EMPTY);
|
||||||
boolean hasWhere = false;
|
boolean hasWhere = false;
|
||||||
String entityWhere = getEntitySql(tableInfo, wrapper);
|
String entityWhere = getEntitySql(tableInfo, wrapper);
|
||||||
@ -54,8 +53,7 @@ public class WrapperUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String buildUnionSqlByWrapper(Class<?> clazz, MPJLambdaWrapper<?> wrapper) {
|
public static String buildUnionSqlByWrapper(Class<?> clazz, MPJLambdaWrapper<?> wrapper) {
|
||||||
TableInfo tableInfo = TableHelper.get(clazz);
|
TableInfo tableInfo = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(tableInfo, clazz);
|
|
||||||
String first = Optional.ofNullable(wrapper.getSqlFirst()).orElse(StringPool.EMPTY);
|
String first = Optional.ofNullable(wrapper.getSqlFirst()).orElse(StringPool.EMPTY);
|
||||||
boolean hasWhere = false;
|
boolean hasWhere = false;
|
||||||
String entityWhere = getEntitySql(tableInfo, wrapper);
|
String entityWhere = getEntitySql(tableInfo, wrapper);
|
||||||
|
@ -2,7 +2,6 @@ package com.github.yulichang.toolkit.support;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||||
import com.github.yulichang.config.ConfigProperties;
|
import com.github.yulichang.config.ConfigProperties;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.FieldStringMap;
|
import com.github.yulichang.toolkit.FieldStringMap;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
import com.github.yulichang.wrapper.segments.SelectCache;
|
import com.github.yulichang.wrapper.segments.SelectCache;
|
||||||
@ -29,8 +28,7 @@ public class ColumnCache {
|
|||||||
|
|
||||||
public static List<SelectCache> getListField(Class<?> clazz) {
|
public static List<SelectCache> getListField(Class<?> clazz) {
|
||||||
return LIST_CACHE.computeIfAbsent(clazz, c -> {
|
return LIST_CACHE.computeIfAbsent(clazz, c -> {
|
||||||
TableInfo tableInfo = TableHelper.get(clazz);
|
TableInfo tableInfo = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(tableInfo, c);
|
|
||||||
List<SelectCache> list = new ArrayList<>();
|
List<SelectCache> list = new ArrayList<>();
|
||||||
if (ConfigProperties.tableInfoAdapter.mpjHasPK(tableInfo)) {
|
if (ConfigProperties.tableInfoAdapter.mpjHasPK(tableInfo)) {
|
||||||
list.add(new SelectCache(clazz, true, tableInfo.getKeyColumn(), tableInfo.getKeyType(),
|
list.add(new SelectCache(clazz, true, tableInfo.getKeyColumn(), tableInfo.getKeyType(),
|
||||||
|
@ -5,7 +5,6 @@ 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.*;
|
import com.baomidou.mybatisplus.core.toolkit.*;
|
||||||
import com.github.yulichang.adapter.AdapterHelper;
|
import com.github.yulichang.adapter.AdapterHelper;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.LogicInfoUtils;
|
import com.github.yulichang.toolkit.LogicInfoUtils;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
import com.github.yulichang.toolkit.TableList;
|
import com.github.yulichang.toolkit.TableList;
|
||||||
@ -167,24 +166,22 @@ public class DeleteJoinWrapper<T> extends JoinAbstractLambdaWrapper<T, DeleteJoi
|
|||||||
return typedThis;
|
return typedThis;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"DuplicatedCode", "DataFlowIssue"})
|
@SuppressWarnings("DuplicatedCode")
|
||||||
private void check(List<Class<?>> classList) {
|
private void check(List<Class<?>> classList) {
|
||||||
Class<T> entityClass = getEntityClass();
|
Class<T> entityClass = getEntityClass();
|
||||||
TableInfo tableInfo = TableHelper.get(entityClass);
|
TableInfo tableInfo = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(tableInfo, entityClass);
|
|
||||||
//检查
|
//检查
|
||||||
boolean mainLogic = AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo);
|
boolean mainLogic = AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo);
|
||||||
boolean check = classList.stream().allMatch(t -> {
|
boolean check = classList.stream().allMatch(t -> {
|
||||||
TableInfo ti = TableHelper.get(t);
|
TableInfo ti = TableHelper.getAssert(t);
|
||||||
Asserts.hasTable(ti, t);
|
|
||||||
return mainLogic == AdapterHelper.getTableInfoAdapter().mpjHasLogic(ti);
|
return mainLogic == AdapterHelper.getTableInfoAdapter().mpjHasLogic(ti);
|
||||||
});
|
});
|
||||||
if (!check) {
|
if (!check) {
|
||||||
throw ExceptionUtils.mpe("连表删除只适用于全部表(主表和副表)都是物理删除或全部都是逻辑删除, " +
|
throw ExceptionUtils.mpe("连表删除只适用于全部表(主表和副表)都是物理删除或全部都是逻辑删除, " +
|
||||||
"不支持同时存在物理删除和逻辑删除 [物理删除->(%s)] [逻辑删除->(%s)]",
|
"不支持同时存在物理删除和逻辑删除 [物理删除->(%s)] [逻辑删除->(%s)]",
|
||||||
classList.stream().filter(t -> !AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.get(t)))
|
classList.stream().filter(t -> !AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.getAssert(t)))
|
||||||
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)),
|
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)),
|
||||||
classList.stream().filter(t -> AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.get(t)))
|
classList.stream().filter(t -> AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.getAssert(t)))
|
||||||
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)));
|
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -374,8 +374,7 @@ public abstract class JoinAbstractLambdaWrapper<T, Children extends JoinAbstract
|
|||||||
if (Objects.equals(wrapper.getJoinClass(), clazz)) {
|
if (Objects.equals(wrapper.getJoinClass(), clazz)) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
TableInfo info = TableHelper.get(clazz);
|
TableInfo info = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(info, clazz);
|
|
||||||
String tableName = info.getTableName();
|
String tableName = info.getTableName();
|
||||||
return Optional.ofNullable(wrapper.from.getStringValue())
|
return Optional.ofNullable(wrapper.from.getStringValue())
|
||||||
.map(w -> w.contains(Constant.JOIN + StringPool.SPACE + tableName + StringPool.SPACE))
|
.map(w -> w.contains(Constant.JOIN + StringPool.SPACE + tableName + StringPool.SPACE))
|
||||||
@ -391,8 +390,7 @@ public abstract class JoinAbstractLambdaWrapper<T, Children extends JoinAbstract
|
|||||||
public <R> Children join(String keyWord, Class<R> clazz, String tableAlias, BiConsumer<JoinAbstractLambdaWrapper<T, ?>, Children> consumer) {
|
public <R> Children join(String keyWord, Class<R> clazz, String tableAlias, BiConsumer<JoinAbstractLambdaWrapper<T, ?>, Children> consumer) {
|
||||||
Integer oldIndex = this.getIndex();
|
Integer oldIndex = this.getIndex();
|
||||||
int newIndex = tableIndex;
|
int newIndex = tableIndex;
|
||||||
TableInfo info = TableHelper.get(clazz);
|
TableInfo info = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(info, clazz);
|
|
||||||
Children instance = instance(newIndex, keyWord, clazz, info.getTableName());
|
Children instance = instance(newIndex, keyWord, clazz, info.getTableName());
|
||||||
instance.isOn = true;
|
instance.isOn = true;
|
||||||
instance.isMain = false;
|
instance.isMain = false;
|
||||||
|
@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.*;
|
import com.baomidou.mybatisplus.core.toolkit.*;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||||
import com.github.yulichang.adapter.AdapterHelper;
|
import com.github.yulichang.adapter.AdapterHelper;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.LambdaUtils;
|
import com.github.yulichang.toolkit.LambdaUtils;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
import com.github.yulichang.toolkit.TableList;
|
import com.github.yulichang.toolkit.TableList;
|
||||||
@ -198,11 +197,11 @@ public class UpdateJoinWrapper<T> extends JoinAbstractLambdaWrapper<T, UpdateJoi
|
|||||||
this.tableName = tableName;
|
this.tableName = tableName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("DuplicatedCode")
|
||||||
private void getSqlByEntity(StringBuilder sb, boolean filterNull, List<Object> entityList) {
|
private void getSqlByEntity(StringBuilder sb, boolean filterNull, List<Object> entityList) {
|
||||||
for (Object obj : entityList) {
|
for (Object obj : entityList) {
|
||||||
Assert.isTrue(tableList.contain(obj.getClass()), "更新的实体不是主表或关联表 <%>", obj.getClass().getSimpleName());
|
Assert.isTrue(tableList.contain(obj.getClass()), "更新的实体不是主表或关联表 <%>", obj.getClass().getSimpleName());
|
||||||
TableInfo tableInfo = TableHelper.get(obj.getClass());
|
TableInfo tableInfo = TableHelper.getAssert(obj.getClass());
|
||||||
Asserts.hasTable(tableInfo, obj.getClass());
|
|
||||||
for (TableFieldInfo fieldInfo : tableInfo.getFieldList()) {
|
for (TableFieldInfo fieldInfo : tableInfo.getFieldList()) {
|
||||||
if (AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo) && fieldInfo.isLogicDelete()) {
|
if (AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo) && fieldInfo.isLogicDelete()) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
|||||||
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.StringPool;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.LambdaUtils;
|
import com.github.yulichang.toolkit.LambdaUtils;
|
||||||
import com.github.yulichang.toolkit.MPJReflectionKit;
|
import com.github.yulichang.toolkit.MPJReflectionKit;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
@ -51,8 +50,7 @@ public interface Query<Children> extends Serializable {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
default <E> Children select(Class<E> entityClass, Predicate<TableFieldInfo> predicate) {
|
default <E> Children select(Class<E> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||||
TableInfo info = TableHelper.get(entityClass);
|
TableInfo info = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(info, entityClass);
|
|
||||||
Map<String, SelectCache> cacheMap = ColumnCache.getMapField(entityClass);
|
Map<String, SelectCache> cacheMap = ColumnCache.getMapField(entityClass);
|
||||||
info.getFieldList().stream().filter(predicate).collect(Collectors.toList()).forEach(
|
info.getFieldList().stream().filter(predicate).collect(Collectors.toList()).forEach(
|
||||||
i -> getSelectColum().add(new SelectNormal(cacheMap.get(i.getProperty()), getIndex(), isHasAlias(), getAlias())));
|
i -> getSelectColum().add(new SelectNormal(cacheMap.get(i.getProperty()), getIndex(), isHasAlias(), getAlias())));
|
||||||
@ -71,8 +69,7 @@ public interface Query<Children> extends Serializable {
|
|||||||
* @return children
|
* @return children
|
||||||
*/
|
*/
|
||||||
default <E> Children selectFilter(Class<E> entityClass, Predicate<SelectCache> predicate) {
|
default <E> Children selectFilter(Class<E> entityClass, Predicate<SelectCache> predicate) {
|
||||||
TableInfo info = TableHelper.get(entityClass);
|
TableInfo info = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(info, entityClass);
|
|
||||||
List<SelectCache> cacheList = ColumnCache.getListField(entityClass);
|
List<SelectCache> cacheList = ColumnCache.getListField(entityClass);
|
||||||
cacheList.stream().filter(predicate).collect(Collectors.toList()).forEach(
|
cacheList.stream().filter(predicate).collect(Collectors.toList()).forEach(
|
||||||
i -> getSelectColum().add(new SelectNormal(i, getIndex(), isHasAlias(), getAlias())));
|
i -> getSelectColum().add(new SelectNormal(i, getIndex(), isHasAlias(), getAlias())));
|
||||||
|
@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.LambdaUtils;
|
import com.github.yulichang.toolkit.LambdaUtils;
|
||||||
import com.github.yulichang.toolkit.MPJReflectionKit;
|
import com.github.yulichang.toolkit.MPJReflectionKit;
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
@ -257,8 +256,7 @@ public class MybatisLabel<E, T> implements Label<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void autoBuild(boolean auto, Class<E> entityClass, Class<T> tagClass) {
|
private void autoBuild(boolean auto, Class<E> entityClass, Class<T> tagClass) {
|
||||||
TableInfo tableInfo = TableHelper.get(entityClass);
|
TableInfo tableInfo = TableHelper.getAssert(entityClass);
|
||||||
Asserts.hasTable(tableInfo, entityClass);
|
|
||||||
Map<String, FieldCache> tagMap = MPJReflectionKit.getFieldMap(tagClass);
|
Map<String, FieldCache> tagMap = MPJReflectionKit.getFieldMap(tagClass);
|
||||||
if (auto && !tagMap.isEmpty()) {
|
if (auto && !tagMap.isEmpty()) {
|
||||||
List<SelectCache> listField = ColumnCache.getListField(entityClass);
|
List<SelectCache> listField = ColumnCache.getListField(entityClass);
|
||||||
|
@ -4,7 +4,6 @@ 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.StringUtils;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||||
import com.github.yulichang.config.ConfigProperties;
|
import com.github.yulichang.config.ConfigProperties;
|
||||||
import com.github.yulichang.toolkit.Asserts;
|
|
||||||
import com.github.yulichang.toolkit.TableHelper;
|
import com.github.yulichang.toolkit.TableHelper;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.apache.ibatis.session.Configuration;
|
import org.apache.ibatis.session.Configuration;
|
||||||
@ -84,8 +83,7 @@ public class SelectCache {
|
|||||||
} else {
|
} else {
|
||||||
this.hasTypeHandle = this.tableFieldInfo.getTypeHandler() != null && tableFieldInfo.getTypeHandler() != UnknownTypeHandler.class;
|
this.hasTypeHandle = this.tableFieldInfo.getTypeHandler() != null && tableFieldInfo.getTypeHandler() != UnknownTypeHandler.class;
|
||||||
if (this.hasTypeHandle) {
|
if (this.hasTypeHandle) {
|
||||||
TableInfo info = TableHelper.get(clazz);
|
TableInfo info = TableHelper.getAssert(clazz);
|
||||||
Asserts.hasTable(info, clazz);
|
|
||||||
this.typeHandler = getTypeHandler(ConfigProperties.tableInfoAdapter.mpjGetConfiguration(info), tableFieldInfo);
|
this.typeHandler = getTypeHandler(ConfigProperties.tableInfoAdapter.mpjGetConfiguration(info), tableFieldInfo);
|
||||||
} else {
|
} else {
|
||||||
this.typeHandler = null;
|
this.typeHandler = null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user