Pārlūkot izejas kodu

代码生成器支持 BaseEntity

jobob 9 gadi atpakaļ
vecāks
revīzija
a1df999ea9

+ 28 - 3
mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java

@@ -192,6 +192,12 @@ public class AutoGenerator {
 				ResultSet results = conn.prepareStatement(tableFieldsSql).executeQuery();
 				while (results.next()) {
 					String field = results.getString(config.getConfigDataSource().getFieldName());
+
+					/* 开启 baseEntity 跳过公共字段 */
+					if (null != config.getConfigBaseEntity() && config.getConfigBaseEntity().includeColumns(field)) {
+						continue;
+					}
+
 					columns.add(field);
 					types.add(results.getString(config.getConfigDataSource().getFieldType()));
 					comments.add(results.getString(config.getConfigDataSource().getFieldComment()));
@@ -524,10 +530,21 @@ public class AutoGenerator {
 			bw.write("import com.baomidou.mybatisplus.annotations.IdType;");
 			bw.newLine();
 		}
-		bw.write("import com.baomidou.mybatisplus.annotations.TableField;");
 		bw.newLine();
-		bw.write("import com.baomidou.mybatisplus.annotations.TableId;");
+		/*
+		 * 开启 BaseEntity 导入自定义包
+		 */
+		if (null != config.getConfigBaseEntity() && null != config.getConfigBaseEntity().getPackageName()
+				&& !config.getEntityPackage().equals(config.getConfigBaseEntity().getPackageName())) {
+			bw.write("import " + config.getConfigBaseEntity().getPackageName() + ";");
+			bw.newLine();
+		}
+		bw.write("import com.baomidou.mybatisplus.annotations.TableField;");
 		bw.newLine();
+		if (null == config.getConfigBaseEntity()) {
+			bw.write("import com.baomidou.mybatisplus.annotations.TableId;");
+			bw.newLine();
+		}
 		if (table.contains("_")) {
 			bw.write("import com.baomidou.mybatisplus.annotations.TableName;");
 			bw.newLine();
@@ -539,7 +556,15 @@ public class AutoGenerator {
 			bw.write("@TableName(\"" + table + "\")");
 			bw.newLine();
 		}
-		bw.write("public class " + beanName + " implements Serializable {");
+		
+		/**
+		 * 实体类名处理,开启 BaseEntity 继承父类
+		 */
+		if (null != config.getConfigBaseEntity()) {
+			bw.write("public class " + beanName + " extends " + config.getConfigBaseEntity().getClassName() + " {");
+		} else {
+			bw.write("public class " + beanName + " implements Serializable {");
+		}
 		bw.newLine();
 		bw.newLine();
 		bw.write("\t@TableField(exist = false)");

+ 26 - 4
mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/ConfigBaseEntitiy.java → mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/ConfigBaseEntity.java

@@ -15,6 +15,8 @@
  */
 package com.baomidou.mybatisplus.generator;
 
+import com.baomidou.mybatisplus.toolkit.StringUtils;
+
 /**
  * <p>
  * 基础实体配置
@@ -23,22 +25,42 @@ package com.baomidou.mybatisplus.generator;
  * @author hubin
  * @Date 2016-09-22
  */
-public class ConfigBaseEntitiy {
+public class ConfigBaseEntity {
 	/*
-	 * 包名
+	 * 包名,不设置默认使用 config.getEntityPackage() 配置内容
 	 */
 	private String packageName;
 
 	/*
-	 * 类名
+	 * 类名,默认 BaseEntity
 	 */
-	private String className;
+	private String className = "BaseEntity";
 
 	/*
 	 * 公共字段数组
 	 */
 	private String[] columns;
 
+	/**
+	 * <p>
+	 * 判断是否为公共字段
+	 * </p>
+	 * 
+	 * @param column
+	 *            判断字段内容
+	 * @return
+	 */
+	public boolean includeColumns(String column) {
+		if (StringUtils.isNotEmpty(column)) {
+			for (String cl : columns) {
+				if (column.equals(cl)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
 	public String getPackageName() {
 		return packageName;
 	}

+ 11 - 0
mybatis-plus/src/main/java/com/baomidou/mybatisplus/generator/ConfigGenerator.java

@@ -131,6 +131,9 @@ public class ConfigGenerator {
 
 	protected ConfigIdType configIdType = ConfigIdType.LONG;
 
+	protected ConfigBaseEntity configBaseEntity = null;
+
+
 	public String getSaveDir() {
 		return saveDir;
 	}
@@ -189,6 +192,14 @@ public class ConfigGenerator {
 		return superServiceImpl;
 	}
 
+	public ConfigBaseEntity getConfigBaseEntity() {
+		return configBaseEntity;
+	}
+
+	public void setConfigBaseEntity(ConfigBaseEntity configBaseEntity) {
+		this.configBaseEntity = configBaseEntity;
+	}
+
 	public void setSuperServiceImpl(String superServiceImpl) {
 		this.superServiceImpl = superServiceImpl;
 	}

+ 7 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/ConfigGeneratorTest.java

@@ -82,6 +82,13 @@ public class ConfigGeneratorTest {
 //		 cg.setMapperXMLName("Test%sMapper");
 //		 cg.setServiceName("Test%sSer");
 //		 cg.setServiceImplName("%sSerImpl");
+		
+		/**
+		 * 自定义 BaseEntity
+		 */
+//		ConfigBaseEntity cbe = new ConfigBaseEntity();
+//		cbe.setColumns(new String[]{"test_id", "age", "createTime"});
+//		cg.setConfigBaseEntity(cbe);
 		return cg;
 	}