This commit is contained in:
admin 2021-03-24 13:45:41 +08:00
parent cd0a3d0f49
commit 4cf2f9e60c
2 changed files with 1 additions and 54 deletions

View File

@ -1,23 +1,15 @@
package com.github.yulichang.common.support.alias;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* 字段添加别名
* 使用方法:
* <p>
* select ${ew.aliasColumn("table","t")} from table t ${ew.customSqlSegment("t")}
* select t.id,t.sex from table t ${ew.customSqlSegment("t")}
* </p>
* 对应sql
* <p>
@ -31,12 +23,6 @@ import java.util.stream.Collectors;
* @author yulichang
*/
public class AliasLambdaQueryWrapper<T> extends LambdaQueryWrapper<T> {
/**
* 别名查询字段缓存
*/
private static final Map<Class<?>, Map<String, String>> ALIAS_COLUMN_CACHE = new ConcurrentHashMap<>();
/**
* 字段别名
*/
@ -58,43 +44,4 @@ public class AliasLambdaQueryWrapper<T> extends LambdaQueryWrapper<T> {
this.alias = alias;
return super.getCustomSqlSegment();
}
/**
* ew.customSqlSegment("table_name", "t")
*
* @param tableName 数据库表名
* @param alias 别名
*/
public String aliasColumn(String tableName, String alias) {
TableInfo tableInfo = TableInfoHelper.getTableInfo(tableName);
Assert.notNull(tableInfo, "未找到对应的表 -> %s", tableName);
Assert.isTrue(StringUtils.isNotBlank(alias), "别名不能为空");
this.alias = alias;
Map<String, String> aliasMap = ALIAS_COLUMN_CACHE.get(tableInfo.getEntityType());
if (CollectionUtils.isEmpty(aliasMap)) {
aliasMap = new ConcurrentHashMap<>();
String s = concat(tableInfo, alias);
aliasMap.put(alias, s);
ALIAS_COLUMN_CACHE.put(tableInfo.getEntityType(), aliasMap);
return s;
} else {
if (!aliasMap.containsKey(alias)) {
String s = concat(tableInfo, alias);
aliasMap.put(alias, s);
return s;
} else {
return aliasMap.get(alias);
}
}
}
private String concat(TableInfo tableInfo, String alias) {
String s = tableInfo.getFieldList().stream().map(
i -> alias + StringPool.DOT + i.getColumn()).collect(Collectors.joining(StringPool.COMMA));
if (tableInfo.havePK()) {
s = alias + StringPool.DOT + tableInfo.getKeyColumn() + StringPool.COMMA + s;
}
return s;
}
}

BIN
wx.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 41 KiB