mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-06 16:48:24 +08:00
commit
80ebb40481
@ -114,12 +114,58 @@ public class Column {
|
|||||||
if (!columnConfig.getPropertyType().contains(".")) {
|
if (!columnConfig.getPropertyType().contains(".")) {
|
||||||
return columnConfig.getPropertyType();
|
return columnConfig.getPropertyType();
|
||||||
}
|
}
|
||||||
return StringUtil.substringAfterLast(columnConfig.getPropertyType(), ".");
|
return convertToSimpleGenericType(columnConfig.getPropertyType());
|
||||||
} else {
|
} else {
|
||||||
return StringUtil.substringAfterLast(propertyType, ".");
|
return convertToSimpleGenericType(propertyType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String convertToSimpleGenericType(String fullType) {
|
||||||
|
if (fullType == null || fullType.isEmpty()) {
|
||||||
|
return fullType;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果不包含泛型,直接处理
|
||||||
|
if (!fullType.contains("<") && !fullType.endsWith(">")) {
|
||||||
|
return StringUtil.substringAfterLast(fullType, ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while (i < fullType.length()) {
|
||||||
|
char c = fullType.charAt(i);
|
||||||
|
|
||||||
|
if (c == '<' || c == ',' || c == '>') {
|
||||||
|
result.append(c);
|
||||||
|
if (c == ',' || c == '<') {
|
||||||
|
// 跳过空格
|
||||||
|
while (i + 1 < fullType.length() && fullType.charAt(i + 1) == ' ') {
|
||||||
|
i++;
|
||||||
|
result.append(' ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
} else {
|
||||||
|
// 提取类型名称
|
||||||
|
int start = i;
|
||||||
|
while (i < fullType.length() && fullType.charAt(i) != '<' &&
|
||||||
|
fullType.charAt(i) != ',' && fullType.charAt(i) != '>') {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
String typeName = fullType.substring(start, i).trim();
|
||||||
|
if (!typeName.isEmpty()) {
|
||||||
|
// 转换为简单类名
|
||||||
|
String simpleType = StringUtil.substringAfterLast(typeName, ".");
|
||||||
|
result.append(simpleType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
public void setPropertyType(String propertyType) {
|
public void setPropertyType(String propertyType) {
|
||||||
this.propertyType = propertyType;
|
this.propertyType = propertyType;
|
||||||
}
|
}
|
||||||
@ -216,16 +262,41 @@ public class Column {
|
|||||||
*/
|
*/
|
||||||
private static void addImportClass(Set<String> importClasses, String importClass) {
|
private static void addImportClass(Set<String> importClasses, String importClass) {
|
||||||
importClass = importClass.trim();
|
importClass = importClass.trim();
|
||||||
|
extractAllTypes(importClasses, importClass);
|
||||||
// java.util.List<String> >>>>> java.util.List
|
|
||||||
if (importClass.contains("<") && importClass.endsWith(">")) {
|
|
||||||
importClass = importClass.substring(0, importClass.indexOf("<"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 不包含“.”则认为是原始类型,不需要import
|
private static void extractAllTypes(Set<String> importClasses, String typeString) {
|
||||||
// lang 包不需要显式导入
|
if (typeString == null || typeString.isEmpty()) {
|
||||||
if (importClass.contains(".") && !importClass.startsWith("java.lang.")) {
|
return;
|
||||||
importClasses.add(importClass);
|
}
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while (i < typeString.length()) {
|
||||||
|
// 跳过非字母字符
|
||||||
|
while (i < typeString.length() && !Character.isLetter(typeString.charAt(i))
|
||||||
|
&& typeString.charAt(i) != '_') {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i >= typeString.length()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提取类名
|
||||||
|
int start = i;
|
||||||
|
while (i < typeString.length() &&
|
||||||
|
(Character.isLetterOrDigit(typeString.charAt(i)) ||
|
||||||
|
typeString.charAt(i) == '_' ||
|
||||||
|
typeString.charAt(i) == '.')) {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
String className = typeString.substring(start, i);
|
||||||
|
|
||||||
|
// 检查是否包含包路径且不是java.lang包
|
||||||
|
if (className.contains(".") && !className.startsWith("java.lang.")) {
|
||||||
|
importClasses.add(className);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +309,7 @@ public class Column {
|
|||||||
public String buildAnnotations() {
|
public String buildAnnotations() {
|
||||||
StringBuilder annotations = new StringBuilder();
|
StringBuilder annotations = new StringBuilder();
|
||||||
|
|
||||||
//@Id 的注解
|
// @Id 的注解
|
||||||
if (isPrimaryKey || columnConfig.isPrimaryKey()) {
|
if (isPrimaryKey || columnConfig.isPrimaryKey()) {
|
||||||
annotations.append("@Id(");
|
annotations.append("@Id(");
|
||||||
|
|
||||||
@ -263,7 +334,6 @@ public class Column {
|
|||||||
needComma = true;
|
needComma = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (entityConfig != null && entityConfig.isColumnCommentEnable() && StringUtil.hasText(comment)) {
|
if (entityConfig != null && entityConfig.isColumnCommentEnable() && StringUtil.hasText(comment)) {
|
||||||
addComma(annotations, needComma);
|
addComma(annotations, needComma);
|
||||||
annotations.append("comment = \"")
|
annotations.append("comment = \"")
|
||||||
@ -286,11 +356,12 @@ public class Column {
|
|||||||
|
|
||||||
boolean needGenColumnAnnotation = (entityConfig != null && entityConfig.isAlwaysGenColumnAnnotation())
|
boolean needGenColumnAnnotation = (entityConfig != null && entityConfig.isAlwaysGenColumnAnnotation())
|
||||||
|| !name.equalsIgnoreCase(StringUtil.camelToUnderline(property))
|
|| !name.equalsIgnoreCase(StringUtil.camelToUnderline(property))
|
||||||
|| (entityConfig != null && entityConfig.isColumnCommentEnable() && StringUtil.hasText(this.comment) && annotations.length() == 0);
|
|| (entityConfig != null && entityConfig.isColumnCommentEnable() && StringUtil.hasText(this.comment)
|
||||||
|
&& annotations.length() == 0);
|
||||||
|
|
||||||
StringBuilder columnAnnotation = new StringBuilder("@Column(");
|
StringBuilder columnAnnotation = new StringBuilder("@Column(");
|
||||||
|
|
||||||
//@Column 注解
|
// @Column 注解
|
||||||
if (columnConfig.getOnInsertValue() != null
|
if (columnConfig.getOnInsertValue() != null
|
||||||
|| columnConfig.getOnUpdateValue() != null
|
|| columnConfig.getOnUpdateValue() != null
|
||||||
|| columnConfig.getLarge() != null
|
|| columnConfig.getLarge() != null
|
||||||
@ -299,8 +370,7 @@ public class Column {
|
|||||||
|| columnConfig.getJdbcType() != null
|
|| columnConfig.getJdbcType() != null
|
||||||
|| columnConfig.getTypeHandler() != null
|
|| columnConfig.getTypeHandler() != null
|
||||||
|| columnConfig.getTenantId() != null
|
|| columnConfig.getTenantId() != null
|
||||||
|| needGenColumnAnnotation
|
|| needGenColumnAnnotation) {
|
||||||
) {
|
|
||||||
boolean needComma = false;
|
boolean needComma = false;
|
||||||
if (entityConfig != null && entityConfig.isAlwaysGenColumnAnnotation()
|
if (entityConfig != null && entityConfig.isAlwaysGenColumnAnnotation()
|
||||||
|| !name.equalsIgnoreCase(StringUtil.camelToUnderline(property))) {
|
|| !name.equalsIgnoreCase(StringUtil.camelToUnderline(property))) {
|
||||||
@ -340,7 +410,8 @@ public class Column {
|
|||||||
}
|
}
|
||||||
if (columnConfig.getTypeHandler() != null) {
|
if (columnConfig.getTypeHandler() != null) {
|
||||||
addComma(columnAnnotation, needComma);
|
addComma(columnAnnotation, needComma);
|
||||||
columnAnnotation.append("typeHandler = ").append(columnConfig.getTypeHandler().getSimpleName()).append(".class");
|
columnAnnotation.append("typeHandler = ").append(columnConfig.getTypeHandler().getSimpleName())
|
||||||
|
.append(".class");
|
||||||
needComma = true;
|
needComma = true;
|
||||||
}
|
}
|
||||||
if (Boolean.TRUE.equals(columnConfig.getTenantId())) {
|
if (Boolean.TRUE.equals(columnConfig.getTenantId())) {
|
||||||
@ -423,7 +494,8 @@ public class Column {
|
|||||||
|
|
||||||
boolean needGenColumnAnnotation = (entityConfig != null && entityConfig.isAlwaysGenColumnAnnotation())
|
boolean needGenColumnAnnotation = (entityConfig != null && entityConfig.isAlwaysGenColumnAnnotation())
|
||||||
|| !name.equalsIgnoreCase(StringUtil.camelToUnderline(property))
|
|| !name.equalsIgnoreCase(StringUtil.camelToUnderline(property))
|
||||||
|| (entityConfig != null && entityConfig.isColumnCommentEnable() && StringUtil.hasText(this.comment));
|
|| (entityConfig != null && entityConfig.isColumnCommentEnable()
|
||||||
|
&& StringUtil.hasText(this.comment));
|
||||||
|
|
||||||
if (columnConfig.getOnInsertValue() != null
|
if (columnConfig.getOnInsertValue() != null
|
||||||
|| columnConfig.getOnUpdateValue() != null
|
|| columnConfig.getOnUpdateValue() != null
|
||||||
@ -433,8 +505,7 @@ public class Column {
|
|||||||
|| columnConfig.getJdbcType() != null
|
|| columnConfig.getJdbcType() != null
|
||||||
|| columnConfig.getTypeHandler() != null
|
|| columnConfig.getTypeHandler() != null
|
||||||
|| Boolean.TRUE.equals(columnConfig.getTenantId())
|
|| Boolean.TRUE.equals(columnConfig.getTenantId())
|
||||||
|| needGenColumnAnnotation
|
|| needGenColumnAnnotation) {
|
||||||
) {
|
|
||||||
addImportClass(importClasses, com.mybatisflex.annotation.Column.class.getName());
|
addImportClass(importClasses, com.mybatisflex.annotation.Column.class.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user