diff --git a/tigon-codegen/src/main/resources/codegen/model.ftl b/tigon-codegen/src/main/resources/codegen/model.ftl index eac791f..6f23be2 100644 --- a/tigon-codegen/src/main/resources/codegen/model.ftl +++ b/tigon-codegen/src/main/resources/codegen/model.ftl @@ -3,6 +3,7 @@ package ${pkg}.model; import lombok.Getter; import lombok.Setter; +import lombok.experimental.FieldNameConstants; import ${tableAnnotationClassName}; <#if baseModelFullName?has_content> import ${baseModelFullName}; @@ -15,15 +16,16 @@ ${objDoc} @Getter @Setter @${tableAnnotationName}("${table}") +@FieldNameConstants(prefix = "") public class ${ModelName} extends ${baseModelName} { private static final long serialVersionUID = 1L; - +<#-- // Column Names <#list cols as prop> public static final String ${prop.col?upper_case} = "${prop.col}"; +--> - // Properties <#list cols as prop> private ${prop.javaType} ${prop.name}; diff --git a/tigon-model/src/main/java/me/chyxion/tigon/mybatis/SearchProcessArgs.java b/tigon-model/src/main/java/me/chyxion/tigon/mybatis/SearchProcessArgs.java index 6bfca55..354fb51 100644 --- a/tigon-model/src/main/java/me/chyxion/tigon/mybatis/SearchProcessArgs.java +++ b/tigon-model/src/main/java/me/chyxion/tigon/mybatis/SearchProcessArgs.java @@ -5,6 +5,7 @@ import lombok.Setter; import lombok.NonNull; import java.util.List; import lombok.RequiredArgsConstructor; +import me.chyxion.tigon.util.WordUtils; import org.apache.commons.lang3.StringUtils; /** @@ -25,18 +26,23 @@ public class SearchProcessArgs { @Setter private boolean hasPrevOrCol; - public SearchProcessArgs append(String sqlFragment) { + public SearchProcessArgs append(final String sqlFragment) { result.add(new SqlFragment(sqlFragment)); return this; } - public SearchProcessArgs addValue(Object value) { + public SearchProcessArgs addValue(final Object value) { result.add(value); return this; } public String getCol() { String col = criterion.getCol(); + if (col.matches("^\\w+$")) { + col = WordUtils.convertCamelCase( + col, "_").toLowerCase(); + } + return StringUtils.isNotBlank(table) && !col.contains(".") ? table + "." + col : col; diff --git a/tigon-model/src/main/java/me/chyxion/tigon/util/WordUtils.java b/tigon-model/src/main/java/me/chyxion/tigon/util/WordUtils.java index eb7a756..8b8c2d4 100644 --- a/tigon-model/src/main/java/me/chyxion/tigon/util/WordUtils.java +++ b/tigon-model/src/main/java/me/chyxion/tigon/util/WordUtils.java @@ -32,18 +32,12 @@ public class WordUtils { public static String[] splitToWords(String str) { return StringUtils.isNotBlank(str) ? // JSONObject - JSON Object - str.split(new StringBuilder("(?<=[A-Z])(?=[A-Z][a-z])") + // 99Rose - 99 Rose + str.split(new StringBuilder("(?<=[0-9A-Z])(?=[A-Z][a-z])") // MySQL - My SQL .append("|(?<=[a-z])(?=[A-Z])") - // 99Roses -> 99 Roses - .append("|(?<=[^a-zA-Z])(?=[A-Z])") - // .append("|(?<=[^A-Z])(?=[A-Z])") - // 5s - 5 s - // .append("|(?<=[^a-zA-Z])(?=[a-z])") - // A3 - A 3 | a3 - a 3 - // .append("|(?<=[A-Za-z])(?=[^A-Za-z])") - .toString()) : - new String[]{}; + .toString()) : + new String[0]; } /** diff --git a/tigon-model/src/test/java/me/chyxion/tigon/test/WordUtilsTest.java b/tigon-model/src/test/java/me/chyxion/tigon/test/WordUtilsTest.java index 8edc85a..d880980 100644 --- a/tigon-model/src/test/java/me/chyxion/tigon/test/WordUtilsTest.java +++ b/tigon-model/src/test/java/me/chyxion/tigon/test/WordUtilsTest.java @@ -17,8 +17,11 @@ public class WordUtilsTest { System.err.println(WordUtils.convertCamelCase("log4j", "_")); System.err.println(WordUtils.convertCamelCase("log4J", "_")); System.err.println(WordUtils.convertCamelCase("JSONObject", "_")); - System.err.println(WordUtils.convertCamelCase("JSONObject", "_")); System.err.println(WordUtils.convertCamelCase("99Rose", "_")); + System.err.println(WordUtils.convertCamelCase("AAA99Rose", "_")); System.err.println(WordUtils.convertCamelCase("99rose", "_")); + System.err.println(WordUtils.convertCamelCase("Foo.JSONObject", "_")); + + System.err.println("JSONObject".matches("^\\w+$")); } }