|
@@ -3,6 +3,7 @@ package com.sd.framework.util.sql;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
|
+import com.baomidou.mybatisplus.annotation.TableName;
|
|
import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
|
|
import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
|
|
@@ -10,14 +11,18 @@ import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
|
import com.sd.framework.util.sql.mapper.JoinMapper;
|
|
import com.sd.framework.util.sql.mapper.JoinMapper;
|
|
import org.apache.ibatis.reflection.property.PropertyNamer;
|
|
import org.apache.ibatis.reflection.property.PropertyNamer;
|
|
|
|
|
|
|
|
+import java.lang.annotation.Annotation;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
public class Sql<T> {
|
|
public class Sql<T> {
|
|
|
|
|
|
|
|
+ protected static final Map<Class<?>, String> tableNameMap = new ConcurrentHashMap<>();
|
|
protected static final JoinMapper mapper = SpringUtil.getBean(JoinMapper.class);
|
|
protected static final JoinMapper mapper = SpringUtil.getBean(JoinMapper.class);
|
|
|
|
+
|
|
protected final Class<T> resultCls;
|
|
protected final Class<T> resultCls;
|
|
protected final List<String> fieldList = new ArrayList<>();
|
|
protected final List<String> fieldList = new ArrayList<>();
|
|
protected final List<String> fromList = new ArrayList<>();
|
|
protected final List<String> fromList = new ArrayList<>();
|
|
@@ -60,4 +65,28 @@ public class Sql<T> {
|
|
CollectionUtil.join(fromList, StringPool.EMPTY);
|
|
CollectionUtil.join(fromList, StringPool.EMPTY);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 获取表名
|
|
|
|
+ */
|
|
|
|
+ protected static String getTableName(Class<?> cls) {
|
|
|
|
+ return tableNameMap.computeIfAbsent(cls, itemCls -> {
|
|
|
|
+ Annotation[] annotations = itemCls.getAnnotations();
|
|
|
|
+ TableName tableName = null;
|
|
|
|
+ for (Annotation annotation : annotations) {
|
|
|
|
+ if (annotation instanceof TableName) {
|
|
|
|
+ tableName = (TableName) annotation;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ String tableNameStr = null;
|
|
|
|
+ if (tableName != null) {
|
|
|
|
+ tableNameStr = tableName.value();
|
|
|
|
+ }
|
|
|
|
+ if (StrUtil.isBlank(tableNameStr)) {
|
|
|
|
+ tableNameStr = StrUtil.toUnderlineCase(itemCls.getSimpleName());
|
|
|
|
+ }
|
|
|
|
+ return tableNameStr;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|