From 145a6efab30d7a0acb76eee6cd512eba93665efe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 05 十二月 2020 17:19:40 +0800 Subject: [PATCH] 大淘客编码问题解决,mybatis优化 --- utils/src/main/java/org/yeshi/utils/mybatis/ColumnParseUtil.java | 112 ++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 80 insertions(+), 32 deletions(-) diff --git a/utils/src/main/java/org/yeshi/utils/mybatis/ColumnParseUtil.java b/utils/src/main/java/org/yeshi/utils/mybatis/ColumnParseUtil.java index a179a73..01aedc6 100644 --- a/utils/src/main/java/org/yeshi/utils/mybatis/ColumnParseUtil.java +++ b/utils/src/main/java/org/yeshi/utils/mybatis/ColumnParseUtil.java @@ -1,42 +1,90 @@ package org.yeshi.utils.mybatis; +import org.springframework.data.annotation.Transient; + import java.lang.annotation.Annotation; import java.lang.reflect.Field; public class ColumnParseUtil { - public static void parseColumn(Class<?> clz, String path) { - Field[] fields = clz.getDeclaredFields(); - for (Field fd : fields) { - Annotation[] as = fd.getAnnotations(); - for (Annotation a : as) { - if (a instanceof Column) { - Column c = (Column) a; - System.out.println(c.name()); - ColumnUtil.addColumnToMapper(path, c.name(), fd.getName(), getJDBCType(fd.getType().getName())); - } - } - } - } + /** + * 灏嗗睘鎬ц浆涓烘暟鎹簱瀛楁 + * + * @param fieldName + * @return + */ + private static String convertFieldToColumn(String fieldName) { + String column = ""; + for (int i = 0; i < fieldName.length(); i++) { + //澶у啓瀛楁瘝 + if (fieldName.charAt(i) >= 65 && fieldName.charAt(i) <= 90) { + //鍓嶉潰涓�涓负闈炲ぇ鍐� + if (i > 0 && (fieldName.charAt(i - 1) < 65 || fieldName.charAt(i - 1) > 90)) { + column += "_" + fieldName.charAt(i); + } else { + column += fieldName.charAt(i); + } + } else { + column += fieldName.charAt(i); + } + } + return column.toLowerCase(); + } - public static String getJDBCType(String type) { - if (type.endsWith("java.lang.Long")) { - return "BIGINT"; - } else if (type.endsWith("java.lang.Integer")) { - return "INTEGER"; - } else if (type.endsWith("java.lang.String")) { - return "VARCHAR"; - } else if (type.endsWith("java.lang.Boolean")) { - return "BOOLEAN"; - } else if (type.endsWith("java.math.BigDecimal")) { - return "DECIMAL"; - } else if (type.endsWith("java.util.Date")) { - return "TIMESTAMP"; - } else if (type.endsWith("java.lang.Double")) { - return "DOUBLE"; - } else { - return "VARCHAR"; - } - } + public static void parseColumn(Class<?> clz, String path) { + Field[] fields = clz.getDeclaredFields(); + for (Field fd : fields) { + + //private/public 闈瀎inal锛宻tatic灞炴�ф墠浼氬弬涓庤В鏋� + if (fd.getModifiers() != 1 && fd.getModifiers() != 2) { + continue; + } + + + String columName = convertFieldToColumn(fd.getName()); + Annotation[] as = fd.getAnnotations(); + for (Annotation a : as) { + //涓嶅弬涓庤В鏋� + if (a instanceof Column) { + Column c = (Column) a; + columName = c.name(); + + } + } + + for (Annotation a : as) { + //涓嶅弬涓庤В鏋� + if (a instanceof Transient || a instanceof java.beans.Transient) { + columName = null; + break; + } + } + + if (columName != null) { + ColumnUtil.addColumnToMapper(path, columName, fd.getName(), getJDBCType(fd.getType().getName())); + } + + } + } + + public static String getJDBCType(String type) { + if (type.endsWith("java.lang.Long")) { + return "BIGINT"; + } else if (type.endsWith("java.lang.Integer")) { + return "INTEGER"; + } else if (type.endsWith("java.lang.String")) { + return "VARCHAR"; + } else if (type.endsWith("java.lang.Boolean")) { + return "BOOLEAN"; + } else if (type.endsWith("java.math.BigDecimal")) { + return "DECIMAL"; + } else if (type.endsWith("java.util.Date")) { + return "TIMESTAMP"; + } else if (type.endsWith("java.lang.Double")) { + return "DOUBLE"; + } else { + return "VARCHAR"; + } + } } -- Gitblit v1.8.0