浏览代码

getBoolean、getBigDecimal、getBigInteger 支持类型转换

James 3 年之前
父节点
当前提交
90f68739ce
共有 1 个文件被更改,包括 25 次插入20 次删除
  1. 25 20
      src/main/java/com/jfinal/plugin/activerecord/generator/BaseModelGenerator.java

+ 25 - 20
src/main/java/com/jfinal/plugin/activerecord/generator/BaseModelGenerator.java

@@ -32,16 +32,16 @@ import com.jfinal.template.Engine;
  * Base model 生成器
  */
 public class BaseModelGenerator {
-	
+
 	protected Engine engine;
 	protected String template = "/com/jfinal/plugin/activerecord/generator/base_model_template.jf";
-	
+
 	protected String baseModelPackageName;
 	protected String baseModelOutputDir;
 	protected boolean generateChainSetter = false;
-	
+
 	protected JavaKeyword javaKeyword = JavaKeyword.me;
-	
+
 	/**
 	 * 针对 Model 中七种可以自动转换类型的 getter 方法,调用其具有确定类型返回值的 getter 方法
 	 * 享用自动类型转换的便利性,例如 getInt(String)、getStr(String)
@@ -57,12 +57,17 @@ public class BaseModelGenerator {
 		put("java.lang.Float", "getFloat");
 		put("java.lang.Short", "getShort");
 		put("java.lang.Byte", "getByte");
-		
+
 		// 新增两种可自动转换类型的 getter 方法
 		put("java.util.Date", "getDate");
 		put("java.time.LocalDateTime", "getLocalDateTime");
+
+		// 新增 TypeKit 转换类之后,支持了更多的类型
+		put("java.lang.Boolean", "getBoolean");
+		put("java.math.BigDecimal", "getBigDecimal");
+		put("java.math.BigInteger", "getBigInteger");
 	}};
-	
+
 	public BaseModelGenerator(String baseModelPackageName, String baseModelOutputDir) {
 		if (StrKit.isBlank(baseModelPackageName)) {
 			throw new IllegalArgumentException("baseModelPackageName can not be blank.");
@@ -73,13 +78,13 @@ public class BaseModelGenerator {
 		if (StrKit.isBlank(baseModelOutputDir)) {
 			throw new IllegalArgumentException("baseModelOutputDir can not be blank.");
 		}
-		
+
 		this.baseModelPackageName = baseModelPackageName;
 		this.baseModelOutputDir = baseModelOutputDir;
-		
+
 		initEngine();
 	}
-	
+
 	protected void initEngine() {
 		engine = new Engine();
 		engine.setToClassPathSourceFactory();	// 从 class path 内读模板文件
@@ -87,36 +92,36 @@ public class BaseModelGenerator {
 		engine.addSharedObject("getterTypeMap", getterTypeMap);
 		engine.addSharedObject("javaKeyword", javaKeyword);
 	}
-	
+
 	/**
 	 * 使用自定义模板生成 base model
 	 */
 	public void setTemplate(String template) {
 		this.template = template;
 	}
-	
+
 	public void setGenerateChainSetter(boolean generateChainSetter) {
 		this.generateChainSetter = generateChainSetter;
 	}
-	
+
 	public void generate(List<TableMeta> tableMetas) {
 		System.out.println("Generate base model ...");
 		System.out.println("Base Model Output Dir: " + baseModelOutputDir);
-		
+
 		for (TableMeta tableMeta : tableMetas) {
 			genBaseModelContent(tableMeta);
 		}
 		writeToFile(tableMetas);
 	}
-	
+
 	protected void genBaseModelContent(TableMeta tableMeta) {
 		Kv data = Kv.by("baseModelPackageName", baseModelPackageName);
 		data.set("generateChainSetter", generateChainSetter);
 		data.set("tableMeta", tableMeta);
-		
+
 		tableMeta.baseModelContent = engine.getTemplate(template).renderToString(data);
 	}
-	
+
 	protected void writeToFile(List<TableMeta> tableMetas) {
 		try {
 			for (TableMeta tableMeta : tableMetas) {
@@ -126,7 +131,7 @@ public class BaseModelGenerator {
 			throw new RuntimeException(e);
 		}
 	}
-	
+
 	/**
 	 * base model 覆盖写入
 	 */
@@ -135,17 +140,17 @@ public class BaseModelGenerator {
 		if (!dir.exists()) {
 			dir.mkdirs();
 		}
-		
+
 		String target = baseModelOutputDir + File.separator + tableMeta.baseModelName + ".java";
 		try (OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(target), "UTF-8")) {
 			osw.write(tableMeta.baseModelContent);
 		}
 	}
-	
+
 	public String getBaseModelPackageName() {
 		return baseModelPackageName;
 	}
-	
+
 	public String getBaseModelOutputDir() {
 		return baseModelOutputDir;
 	}