浏览代码

jfinal 3.2 release ^_^

James 8 年之前
父节点
当前提交
358ca73126
共有 1 个文件被更改,包括 26 次插入2 次删除
  1. 26 2
      src/main/java/com/jfinal/plugin/activerecord/generator/BaseModelGenerator.java

+ 26 - 2
src/main/java/com/jfinal/plugin/activerecord/generator/BaseModelGenerator.java

@@ -19,7 +19,9 @@ package com.jfinal.plugin.activerecord.generator;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import com.jfinal.kit.JavaKeyword;
 import com.jfinal.kit.StrKit;
 
@@ -57,7 +59,7 @@ public class BaseModelGenerator {
 	
 	protected String getterTemplate =
 			"\tpublic %s %s() {%n" +
-				"\t\treturn get(\"%s\");%n" +
+				"\t\treturn %s(\"%s\");%n" +
 			"\t}%n%n";
 	
 	protected String baseModelPackageName;
@@ -131,10 +133,32 @@ public class BaseModelGenerator {
 	
 	protected void genGetMethodName(ColumnMeta columnMeta, StringBuilder ret) {
 		String getterMethodName = "get" + StrKit.firstCharToUpperCase(columnMeta.attrName);
-		String getter = String.format(getterTemplate, columnMeta.javaType, getterMethodName, columnMeta.name);
+		String getterOfModel = getGetterOfModel(columnMeta.javaType);
+		String getter = String.format(getterTemplate, columnMeta.javaType, getterMethodName, getterOfModel, columnMeta.name);
 		ret.append(getter);
 	}
 	
+	/**
+	 * 针对 Model 中六种可以自动转换类型的 getter 方法,调用其具有确定类型返回值的 getter 方法
+	 * 享用自动类型转换的便利性,例如 getInt(String)、getStr(String)
+	 * 其它方法使用泛型返回值方法: get(String)
+	 * 注意:jfinal 3.2 及以上版本 Model 中的六种 getter 方法才具有类型转换功能
+	 */
+	protected String getGetterOfModel(String javaType) {
+		String ret = getterTypeMap.get(javaType);
+		return ret != null ? ret : "get";
+	}
+	
+	@SuppressWarnings("serial")
+	protected Map<String, String> getterTypeMap = new HashMap<String, String>() {{
+		put("java.lang.String", "getStr");
+		put("java.lang.Integer", "getInt");
+		put("java.lang.Long", "getLong");
+		put("java.lang.Double", "getDouble");
+		put("java.lang.Float", "getFloat");
+		put("java.lang.Short", "getShort");
+	}};
+	
 	protected void writeToFile(List<TableMeta> tableMetas) {
 		try {
 			for (TableMeta tableMeta : tableMetas) {