⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genibatiscode.java

📁 一个实用的CMS管理
💻 JAVA
字号:
package com.suncms.comm;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Reader;

import java.sql.Connection;
import java.sql.DriverManager;

import java.sql.DatabaseMetaData;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import java.sql.Types;

import java.util.Date;
import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Vector;

public class GenIbatisCode {
	private String filePath = "c:/";
	private String[] mapTablename = { "Vote_q","Vote_a"};
	private Connection conn = null;

	public GenIbatisCode() {
		conn = getConnection();
	}

	/**
	 * private List getTableNames() {
	 * 
	 * List result = new Vector(); try { DatabaseMetaData dbmd =
	 * conn.getMetaData(); ResultSet rs = dbmd.getTableTypes(); String[] types = {
	 * "TABLE" }; rs = dbmd.getTables(null, dbmd.getUserName(), "%", types);
	 * while (rs.next()) { result.add(rs.getString("TABLE_NAME")); } rs.close(); }
	 * catch (SQLException e) { e.printStackTrace(); } return result; }
	 */

	private Connection getConnection() {
		Connection conn = null;
		try {
			// 注册数据库驱动程序为oracle驱动
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (Exception e) {
			// 这样写是为了方便调试程序,出错打印mydb()就知道在什么地方出错了
			System.err.println("mydb(): " + e.getMessage());
		}

		try {
			conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:xe", "suncms", "suncms");
		} catch (Exception ex) {
			System.err.println("conn:" + ex.getMessage());
		}

		return conn;
	}

	public void getMetaData() {
		try {

			Statement stmt = conn.createStatement();
			// List list = getTableNames();

			for (int i = 0; i < mapTablename.length; i++) {
				String element = (String) mapTablename[i];
				ResultSet rs = stmt.executeQuery("select * from " + element);
				ResultSetMetaData rsmd = rs.getMetaData();
				// int numberOfColumns = rsmd.getColumnCount();
				getXml(rsmd, element);
				getDomain(rsmd, element);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void getDomain(ResultSetMetaData rsmd, String tableName) {
		try {
			File file = new File(filePath);
			if (!file.exists()) {
				file.mkdir();
			}

			file = new File(filePath + tableName + ".java");

			String javacode = "package com.suncms.domain; \n";
			javacode += "import java.util.*;  \n";
			javacode += "import java.io.Serializable;  \n";
			javacode += "public class " + tableName
					+ " implements Serializable {  \n";
			javacode += createColumnsStringForJava(rsmd);
			javacode += "}\n";

			FileWriter writer = new FileWriter(file);
			writer.write(javacode);
			writer.flush();
			writer.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void getXml(ResultSetMetaData rsmd, String tableName) {
		try {
			File file = new File(filePath);
			if (!file.exists()) {
				file.mkdir();
			}

			file = new File(filePath + tableName.toLowerCase() + ".xml");

			String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \n";

			xml += "<!DOCTYPE sqlMap PUBLIC \"-//ibatis.apache.org//DTD SQL Map 2.0//EN\" \n";

			xml += "\"http://ibatis.apache.org/dtd/sql-map-2.dtd\"> \n";

			xml += "<sqlMap namespace=\"" + tableName + "\"> \n";
			xml += "<typeAlias alias=\"" + tableName.toLowerCase()
					+ "\" type=\"com.suncms.domain." + tableName + "\"/> \n\n";

			xml += createResultMap(rsmd, tableName);
			xml += (createInsertSql(rsmd, tableName));
			// xml += (createUpdateSql(rsmd, numberOfColumns, tableName));

			xml += "\n</sql-map>";

			FileWriter writer = new FileWriter(file);
			writer.write(xml);
			writer.flush();
			writer.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private String createInsertSql(ResultSetMetaData rsmd, String tableName)
			throws SQLException {

		String result = "<insert id=\"insert" + tableName
				+ "\" parameterClass=\"" + tableName.toLowerCase() + "\"> \n";

		result += "INSERT INTO \n" + tableName + " (\n"
				+ createColumnsString(rsmd) + "\n)\n values(\n"
				+ createWheremapSql(rsmd) + "\n) \n";

		result += "</insert> \n";

		return result;
	}

	private String createResultMap(ResultSetMetaData rsmd, String tableName)
			throws SQLException {

		String result = "<resultMap id=\"" + tableName.toLowerCase()
				+ "InfoResult\"  class=\"" + tableName + "\"> \n";
		
		int numberOfColumns = rsmd.getColumnCount();
		for (int i = 1; i <= numberOfColumns; i++) {
			String colName = rsmd.getColumnName(i);
			result += "<result property=\""+colName.toLowerCase()+"\" column=\""+colName+"\"/> \n";
		}
		result += " </resultMap> \n";

		return result;
	}

	private String createColumnsString(ResultSetMetaData rsmd)
			throws SQLException {

		String result = " ";
		int numberOfColumns = rsmd.getColumnCount();
		for (int i = 1; i <= numberOfColumns; i++) {
			String colName = rsmd.getColumnName(i);
			result += colName + ",\n";
		}
		return result.substring(1, result.length() - 2);

	}

	private String createColumnsStringForJava(ResultSetMetaData rsmd)
			throws SQLException {

		String result = "";
		int numberOfColumns = rsmd.getColumnCount();
		for (int i = 1; i <= numberOfColumns; i++) {
			String colName = rsmd.getColumnName(i);
			String coltype = rsmd.getColumnTypeName(i);
			result += "private " + getType(coltype) + " " + colName.toLowerCase()
					+ "; \n";
		}
		return result;

	}

	private String createWheremapSql(ResultSetMetaData rsmd)
			throws SQLException {

		String result = " ";
		int numberOfColumns = rsmd.getColumnCount();
		for (int i = 1; i <= numberOfColumns; i++) {
			String colName = rsmd.getColumnName(i);
			// String name = rsmd.getColumnTypeName(i);
			result += "#" + colName.toLowerCase() + "#,\n";
		}
		return result.substring(1, result.length() - 2);

	}

	private String getType(String type){
		String Type="";
		if(type.equals("NUMBER")) Type="Integer";
		if(type.equals("CLOB")) Type="String";
		if(type.equals("VARCHAR2")) Type="String";
		if(type.equals("CHAR")) Type="String";
		if(type.equals("TIMESTAMP")) Type="Date";
		if(type.equals("DATE")) Type="Date";
		
		return Type;
	}
	/**
	 * @param args
	 * @throws SQLException
	 */
	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		GenIbatisCode gc = new GenIbatisCode();
		gc.getMetaData();

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -