|
@@ -59,7 +59,8 @@ public abstract class AbstractLambdaWrapper<T, Children extends AbstractLambdaWr
|
|
|
}
|
|
|
|
|
|
protected String columnToString(SFunction<T, ?> column, boolean onlyColumn) {
|
|
|
- return getColumn(LambdaUtils.resolve(column), onlyColumn);
|
|
|
+ ColumnCache cache = getColumnCache(column);
|
|
|
+ return onlyColumn ? cache.getColumn() : cache.getColumnSelect();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -67,19 +68,17 @@ public abstract class AbstractLambdaWrapper<T, Children extends AbstractLambdaWr
|
|
|
* <p>
|
|
|
* 如果获取不到列信息,那么本次条件组装将会失败
|
|
|
*
|
|
|
- * @param lambda lambda 表达式
|
|
|
- * @param onlyColumn 如果是,结果: "name", 如果否: "name" as "name"
|
|
|
* @return 列
|
|
|
* @throws com.baomidou.mybatisplus.core.exceptions.MybatisPlusException 获取不到列信息时抛出异常
|
|
|
* @see SerializedLambda#getImplClass()
|
|
|
* @see SerializedLambda#getImplMethodName()
|
|
|
*/
|
|
|
- private String getColumn(SerializedLambda lambda, boolean onlyColumn) {
|
|
|
+ protected ColumnCache getColumnCache(SFunction<T, ?> column) {
|
|
|
+ SerializedLambda lambda = LambdaUtils.resolve(column);
|
|
|
Class<?> aClass = lambda.getInstantiatedType();
|
|
|
tryInitCache(aClass);
|
|
|
String fieldName = PropertyNamer.methodToProperty(lambda.getImplMethodName());
|
|
|
- ColumnCache columnCache = getColumnCache(fieldName, aClass);
|
|
|
- return onlyColumn ? columnCache.getColumn() : columnCache.getColumnSelect();
|
|
|
+ return getColumnCache(fieldName, aClass);
|
|
|
}
|
|
|
|
|
|
private void tryInitCache(Class<?> lambdaClass) {
|