package com.qianwen.smartman.common.utils;
|
|
import com.baomidou.mybatisplus.annotation.DbType;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
|
import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache;
|
import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers;
|
import java.util.Collection;
|
import java.util.Map;
|
import org.apache.ibatis.reflection.property.PropertyNamer;
|
import com.qianwen.core.tool.utils.SpringUtil;
|
|
public class Lambda<T> {
|
public static <T> ExtraLambdaQueryWrapper<T> create() {
|
return new ExtraLambdaQueryWrapper<>();
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> create(DbType dbType) {
|
return new ExtraLambdaQueryWrapper<>(dbType);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> eq(SFunction<T, ?> f, Object v) {
|
return new ExtraLambdaQueryWrapper<T>().eq(f, v);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> eq(boolean condition, SFunction<T, ?> f, Object v) {
|
return new ExtraLambdaQueryWrapper<T>().eq(condition, f, v);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> ne(SFunction<T, ?> f, Object v) {
|
return new ExtraLambdaQueryWrapper<T>().ne(f, v);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> in(SFunction<T, ?> f, Collection<?> values) {
|
return new ExtraLambdaQueryWrapper<T>().in(f, values);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> in(boolean condition, SFunction<T, ?> f, Collection<?> values) {
|
return new ExtraLambdaQueryWrapper<T>().in(condition, f, values);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> notIn(SFunction<T, ?> f, Collection<?> values) {
|
return new ExtraLambdaQueryWrapper<T>().notIn(f, values);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> notIn(boolean condition, SFunction<T, ?> f, Collection<?> values) {
|
return new ExtraLambdaQueryWrapper<T>().notIn(condition, f, values);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> in(SFunction<T, ?> f, Object... values) {
|
return new ExtraLambdaQueryWrapper<T>().in(f, values);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> in(boolean condition, SFunction<T, ?> f, Object... values) {
|
return new ExtraLambdaQueryWrapper<T>().in(condition, f, values);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> ge(SFunction<T, ?> f, Object v) {
|
return new ExtraLambdaQueryWrapper<T>().ge(f, v);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> ge(boolean condition, SFunction<T, ?> f, Object v) {
|
return new ExtraLambdaQueryWrapper<T>().ge(condition, f, v);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> le(SFunction<T, ?> f, Object v) {
|
return new ExtraLambdaQueryWrapper<T>().le(f, v);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> between(SFunction<T, ?> f, Object v1, Object v2) {
|
return new ExtraLambdaQueryWrapper<T>().between(f, v1, v2);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> asc(SFunction<T, ?> f) {
|
return new ExtraLambdaQueryWrapper<T>().orderByAsc(f);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> desc(SFunction<T, ?> f) {
|
return new ExtraLambdaQueryWrapper<T>().orderByDesc(f);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> like(SFunction<T, ?> f, Object v) {
|
return new ExtraLambdaQueryWrapper<T>().like(f, v);
|
}
|
|
public static <T> ExtraLambdaQueryWrapper<T> like(boolean condition, SFunction<T, ?> f, Object v) {
|
return new ExtraLambdaQueryWrapper<T>().like(condition, f, v);
|
}
|
|
public static <T> LambdaUpdateChainWrapper<T> updateWrapper(BaseMapper<T> baseMapper) {
|
return ChainWrappers.lambdaUpdateChain(baseMapper);
|
}
|
|
public static <T> LambdaUpdateChainWrapper<T> updateWrapper(Class<? extends BaseMapper<T>> cls) {
|
BaseMapper<T> baseMapper = SpringUtil.getBean(cls);
|
return ChainWrappers.lambdaUpdateChain(baseMapper);
|
}
|
|
public static <T> LambdaQueryChainWrapper<T> chainWrapper(Class<? extends BaseMapper<T>> cls) {
|
BaseMapper<T> baseMapper = SpringUtil.getBean(cls);
|
return ChainWrappers.lambdaQueryChain(baseMapper);
|
}
|
|
public static <T> String getName(SFunction<T, ?> fn) {
|
LambdaMeta meta = LambdaUtils.extract(fn);
|
String fieldName = PropertyNamer.methodToProperty(meta.getImplMethodName());
|
Map<String, ColumnCache> columnMap = LambdaUtils.getColumnMap(meta.getInstantiatedClass());
|
ColumnCache columnCache = columnMap.get(LambdaUtils.formatKey(fieldName));
|
Assert.notNull(columnCache, "can not find lambda cache for this property [%s] of entity [%s]", new Object[]{fieldName, meta.getInstantiatedClass().getName()});
|
return columnCache.getColumn();
|
}
|
}
|