![JAR search and dependency download from the Maven repository](/logo.png)
org.zodiac.mybatisplus.binding.helper.WrapperHelper Maven / Gradle / Ivy
package org.zodiac.mybatisplus.binding.helper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.zodiac.commons.constants.DatabaseConstants;
import org.zodiac.commons.util.lang.Strings;
import org.zodiac.core.data.copy.Accept;
import org.zodiac.core.util.SQLCheckUtil;
import org.zodiac.mybatisplus.binding.cache.BindingCacheManager;
import org.zodiac.sdk.toolkit.util.lang.StrUtil;
public class WrapperHelper {
public static void buildOrderBy(QueryWrapper> query, String orderBy, Function field2column) {
/*解析排序。*/
if (StrUtil.isNotBlank(orderBy)) {
for (String field : Strings.split(orderBy, Strings.COMMA)) {
SQLCheckUtil.securityCheck(field);
String[] fieldAndOrder = field.split(Strings.COLON);
String columnName = field2column.apply(fieldAndOrder[0]);
if (fieldAndOrder.length > 1 && DatabaseConstants.ORDER_DESC.equalsIgnoreCase(fieldAndOrder[1])) {
query.orderByDesc(columnName);
} else {
query.orderByAsc(columnName);
}
}
}
}
public static void optimizeSelect(Wrapper> query, Class> entityClass, Class> voClass) {
if (!(query instanceof Query) || query.getSqlSelect() != null) {
return;
}
((Query)query).select(entityClass, buildSelectPredicate(voClass));
}
public static Predicate buildSelectPredicate(Class> voClass) {
List fieldList = BindingCacheManager.getFields(voClass).stream().flatMap(field -> {
Accept accept = field.getAnnotation(Accept.class);
return accept == null ? Stream.of(field.getName())
: accept.override() ? Stream.of(accept.name()) : Stream.of(field.getName(), accept.name());
}).collect(Collectors.toList());
return fieldInfo -> fieldList.contains(fieldInfo.getField().getName()) && !fieldInfo.isLogicDelete();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy