浏览代码

新增支持生成视图model

James 3 年之前
父节点
当前提交
ef0ba7152f

+ 9 - 0
src/main/java/com/jfinal/plugin/activerecord/generator/Generator.java

@@ -119,6 +119,15 @@ public class Generator {
 	}
 	
 	/**
+	 * 配置是否生成 view。默认值为 false
+	 */
+	public void setGenerateView(boolean generateView) {
+		if (metaBuilder != null) {
+			metaBuilder.setGenerateView(generateView);
+		}
+	}
+	
+	/**
 	 * 切换 TypeMapping
 	 * jfinal 4.9.08 版本新增了 addTypeMapping(...) 可以替代该方法的使用
 	 */

+ 17 - 4
src/main/java/com/jfinal/plugin/activerecord/generator/MetaBuilder.java

@@ -54,6 +54,7 @@ public class MetaBuilder {
 	protected TypeMapping typeMapping = new TypeMapping();
 	
 	protected boolean generateRemarks = false;	// 是否生成备注
+	protected boolean generateView = false;		// 是否生成 view
 	
 	public MetaBuilder(DataSource dataSource) {
 		if (dataSource == null) {
@@ -66,6 +67,10 @@ public class MetaBuilder {
 		this.generateRemarks = generateRemarks;
 	}
 	
+	public void setGenerateView(boolean generateView) {
+		this.generateView = generateView;
+	}
+	
 	public void setDialect(Dialect dialect) {
 		if (dialect != null) {
 			this.dialect = dialect;
@@ -124,8 +129,13 @@ public class MetaBuilder {
 		for (java.util.Iterator<TableMeta> it = ret.iterator(); it.hasNext();) {
 			TableMeta tm = it.next();
 			if (StrKit.isBlank(tm.primaryKey)) {
-				it.remove();
-				System.err.println("Skip table " + tm.name + " because there is no primary key");
+				if (generateView) {
+					tm.primaryKey = dialect.getDefaultPrimaryKey();
+					System.out.println("Set primaryKey \"" + tm.primaryKey + "\" for " + tm.name);
+				} else {
+					it.remove();
+					System.err.println("Skip table " + tm.name + " because there is no primary key");
+				}
 			}
 		}
 	}
@@ -200,8 +210,11 @@ public class MetaBuilder {
 	 */
 	protected ResultSet getTablesResultSet() throws SQLException {
 		String schemaPattern = dialect.isOracle() ? dbMeta.getUserName() : null;
-		// return dbMeta.getTables(conn.getCatalog(), schemaPattern, null, new String[]{"TABLE", "VIEW"});
-		return dbMeta.getTables(conn.getCatalog(), schemaPattern, null, new String[]{"TABLE"});	// 不支持 view 生成
+		if (generateView) {
+			return dbMeta.getTables(conn.getCatalog(), schemaPattern, null, new String[]{"TABLE", "VIEW"});
+		} else {
+			return dbMeta.getTables(conn.getCatalog(), schemaPattern, null, new String[]{"TABLE"});	// 不支持 view 生成
+		}
 	}
 	
 	protected void buildTableNames(List<TableMeta> ret) throws SQLException {