GenerateDaoPO.java 3.32 KB
package com.taover.codegenerate.db;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Vector;




/*
 * 如果列是自增长;在数据库描述中需要进行如下描述seq|属性描述
 * 不支持联合主键
 * 同时如果有自己的sequence 则命名规则如下:
 * "SEQ_" + TableSchema + "_" + TableName + "_" + ColumnName
 *  SEQ_schame_tablename(SEQ_EGROCERY_DEVEL_SS_SKU_SKU_ID)
 * 
 */

public class GenerateDaoPO {
	
	public static void main(String[] args) throws Exception{
		
		//读取配置文件
		Properties properties = Tools.getProperties();
		//取数据库连接
		Connection conn = Tools.getConnection(properties);
		//初始化要生成的表列表
		List<String> tableNameList = new ArrayList<String>();

		String outputPath   = properties.getProperty("OutputPath");
		String schameName   = properties.getProperty("SchameName");
		String createSchame = properties.getProperty("CreateSchame");
		String dbLikeStr    = properties.getProperty("DBLikeStr");
		String dbType       = properties.getProperty("dbtype");   
		String dbPackagePath    = properties.getProperty("packageName");
		String tableName    = properties.getProperty("TableName");
		if("mysql".equalsIgnoreCase(dbType)){
			//schameName = schameName.toUpperCase();
			
		}
		
		if (!dbPackagePath.substring(dbPackagePath.length()-1).equals("."))
			dbPackagePath += "."; 

		if (createSchame.equalsIgnoreCase("true") || "ALL".equalsIgnoreCase(tableName) ) {			
			String sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '"+schameName+"'";
			ResultSet rs = Tools.executeQuery(Tools.createStmt(conn), sql);
	        if (null == rs)
	              return ;
	        List<String> result = new ArrayList<String>();
	        try {
	            while (rs.next()) {
	            	tableNameList.add(rs.getString("Table_name"));
	            }
	        } catch (SQLException e) {
	            e.printStackTrace();
	            result = null;
	        }
	        Tools.close(rs);
		} else {
			if("mysql".equalsIgnoreCase(dbType)){
//				tableName = tableName.toUpperCase();
			}
			String[] TableNameArr = tableName.split(",");
			for (int i = 0; i < TableNameArr.length; i++)
				tableNameList.add(TableNameArr[i]);

		}

		for (int i = 0; i < tableNameList.size(); i++) {
			
			String tableNameCurr = (String) tableNameList.get(i);
			
			
			// 取得表中所有列
			Vector<TableColumn> columnsInTable = TableColumn.GetTableInfo(conn, schameName, tableNameCurr, dbLikeStr, dbType);
			if (columnsInTable == null || columnsInTable.size() == 0) {
				System.out.println(tableNameCurr + " : 生成失败,得不到表中列明");
				continue;
			}
			TableColumn pkcolum = TableColumn.getPKColum(columnsInTable);	
			if (pkcolum == null) {
				System.out.println(tableNameCurr + " : 生成失败,未设置主键");
				continue;
			}


			// 生成po类
			GenerateEntity.generateEntity(schameName, outputPath, dbPackagePath, columnsInTable);
			// 生成po类
			GeneratePO.generatePO(outputPath, dbPackagePath, columnsInTable);
			// 生成Dao
			GenerateDao.table2dao(outputPath, dbPackagePath, columnsInTable, dbType);
			System.out.println(tableNameCurr + " : 生成结束");
		}
		conn.close();
		System.out.println("全部结束");

	}
}