`

自动更具数据库表来生成.java文件的小工具

    博客分类:
  • java
阅读更多

快下班了,写点东西吧,

这个小工具写的有几个月了,中间做个小demo的时候还用到了,

自我感觉用着挺爽的,很小,一个类,很快,全自动,很方便,直接修改配置就行。

 

不多说了。

package com.base;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author q821424508@sina.com
 * @version 1.0
 * 
 */

public class Table2Entity {

	private static String Entity2Store = "src/com/hung/model";// 以项目名为根目录
	//private static String tablesSql = "SELECT table_name FROM information_schema.tables WHERE table_schema ='common' AND NOT table_name  LIKE 'sys%'";
	private static String tablesSql = "SELECT table_name FROM information_schema.tables WHERE table_schema ='common' ";
	private static List<String> tables = new ArrayList<String>();
	private static String url = "jdbc:mysql://127.0.0.1/common?useUnicode=true&characterEncoding=utf8";
	private static String driver = "com.mysql.jdbc.Driver";
	private static String username = "admin";
	private static String password = "123456";
	private static String sql = "select * from ";
	private static String author = "q821424508";

	private static Connection conn = null;
	private static Statement stat = null;

	public static void main(String[] args) {
		System.out.println("---begin---");
		init();
		table2Entity();
		System.out.println("---end---");
	}

	/**
     */

	private static void init() {
		File f = new File(Entity2Store);
		if (!f.exists()) {
			f.mkdirs();
		}
	}

	/**
     */

	private static void table2Entity() {
		tables = getTables();
		if (null != tables && tables.size() > 0) {
			for (String tableName : tables) {
				doTable2Entity(tableName);
			}
		}
	}

	/**
     */

	private static void doTable2Entity(String tableName) {
		String sql1 = sql + tableName;
		System.out.println("tableName = " + tableName + "\n");
		conn = getConn();
		try {
			stat = conn.createStatement();
			ResultSet rs = stat.executeQuery(sql1);
			ResultSetMetaData metaDate = rs.getMetaData();
			int count = metaDate.getColumnCount();

			File classFile = getCF(tableName);

			FileWriter fw = new FileWriter(classFile, true);
			BufferedWriter bw = new BufferedWriter(fw);

			StringBuffer sbFields = new StringBuffer();
			
			//toString 方法
			StringBuffer toString = new StringBuffer("\tpublic String toString(){\n");
			toString.append("\t\tString str=\"{");
			
			for (int j = 0; j < count; j++) {
				String columnName = metaDate.getColumnName(j + 1);
				int type = metaDate.getColumnType(j + 1);
				System.out.println(columnName + " : " + type);
				sbFields.append(column2field(columnName, type));
				
				toString.append(""+column2fieldName(columnName)+":'\" + "+column2fieldName(columnName)+" + \"',\" + \"");
				
			}
			
			bw.write(sbFields.toString());
			
			//toString.replace(toString.length()-1, toString.length(), "");
			
			toString.replace(toString.length()-8, toString.length(), "");
			
			toString.append("\"'}\";\n");
			
			toString.append("\t\treturn str;\n\t}\n");
			
			
			bw.write(toString.toString());
			
			
			bw.write("\n}\n");
			bw.close();
			fw.close();

			System.out.println("---------------------------------");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	/**
	 * @param columnName
	 * @param type
	 * @return
	 */

	private static String column2field(String columnName, int type) {
		String field = "";
		String getseter = "";

		String fieldName = column2fieldName(columnName);

		field = getField(fieldName, type);
		getseter = getGetseter(fieldName, type);

		return field + "\n" + getseter;

	}

	/**
	 * @param columnName
	 * @param type
	 * @return
	 */

	private static String getGetseter(String columnName, int type) {
		String filedName = firstChar2Upper(columnName);
		StringBuffer sb = new StringBuffer("");
		switch (type) {
		case Types.BIGINT:
			sb.append("\tpublic long get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(long ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.INTEGER:
			sb.append("\tpublic int get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(int ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;

		case Types.CHAR:
			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.DATE:
			sb.append("\tpublic Date get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(Date ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.DOUBLE:
			sb.append("\tpublic double get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(double ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.FLOAT:
			sb.append("\tpublic float get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(float ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.LONGNVARCHAR:

			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.LONGVARCHAR:
			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.NVARCHAR:
			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.SMALLINT:
			sb.append("\tpublic int get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(int ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.TIMESTAMP:
			sb.append("\tpublic Date get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(Date ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.TINYINT:
			sb.append("\tpublic int get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(int ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.NUMERIC:
			sb.append("\tpublic long get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(long ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.VARCHAR:
			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.BLOB:
			sb.append("\tpublic byte[] get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(byte[] ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;

		default:
			break;
		}
		return sb.toString();

	}

	/**
	 * @param columnName
	 * @param type
	 * @return
	 */

	private static String getField(String columnName, int type) {

		StringBuffer sb = new StringBuffer("\tprivate ");
		switch (type) {
		case Types.BIGINT:
			sb.append("long ").append(columnName);
			break;
		case Types.INTEGER:
			sb.append("int ").append(columnName);
			break;
		case Types.NUMERIC:
			sb.append("long ").append(columnName);
			break;
		case Types.CHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.DATE:
			sb.append("Date ").append(columnName);
			break;
		case Types.DOUBLE:
			sb.append("double ").append(columnName);
			break;
		case Types.FLOAT:
			sb.append("float ").append(columnName);
			break;
		case Types.LONGNVARCHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.LONGVARCHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.NVARCHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.SMALLINT:
			sb.append("int ").append(columnName);
			break;
		case Types.TIMESTAMP:
			sb.append("Date ").append(columnName);
			break;
		case Types.TINYINT:
			sb.append("int ").append(columnName);
			break;
		case Types.VARCHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.BLOB:
			sb.append("byte[] ").append(columnName);
			break;

		default:
			System.err.println("columnName = " + columnName + " : type = "
					+ type);
			break;
		}

		sb.append(";\n");
		return sb.toString();

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static File getCF(String tableName) {

		File classFile = new File(Entity2Store + File.separator
				+ table2EntityName(tableName) + ".java");

		try {
			FileWriter fw = new FileWriter(classFile);
			BufferedWriter bw = new BufferedWriter(fw);
			String cr = getCopyRight();
			String packagePath = getPachagePath();
			String importPath = getImportPath();
			String clazzName = getClassName(tableName);

			bw.write(cr);
			bw.write(packagePath);
			bw.write(importPath);
			bw.write(clazzName);

			bw.flush();
			bw.close();
			fw.close();

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

		return classFile;

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static String getClassName(String tableName) {
		String className = table2EntityName(tableName);
		className = "public class " + className + " implements Serializable{\n";
		className += "\n\t" + "private static final long serialVersionUID ="
				+ (tableName + (Math.random() * 90000000 + 10000000)).hashCode()+"l";
		className += ";\n\n";

		return className;

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static String table2EntityName(String tableName) {
		tableName = column2fieldName(tableName);
		tableName = firstChar2Upper(tableName);
		return tableName;

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static String firstChar2Upper(String tableName) {
		String firstChar = tableName.substring(0, 1);
		String entityName = tableName.replaceFirst(firstChar, firstChar
				.toUpperCase());
		return entityName;

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static String column2fieldName(String columnName) {
		columnName = columnName.toLowerCase();
		while (columnName.contains("_")) {
			int i = columnName.indexOf('_');
			String char2Upper = columnName.substring(i + 1, i + 2);
			columnName = columnName.replaceFirst("_" + char2Upper, char2Upper
					.toUpperCase());
		}

		while (columnName.contains("-")) {
			int i = columnName.indexOf('-');
			String char2Upper = columnName.substring(i + 1, i + 2);
			columnName = columnName.replaceFirst("-" + char2Upper, char2Upper
					.toUpperCase());
		}

		return columnName;

	}

	/**
	 * @return
	 */

	private static String getImportPath() {

		StringBuffer sb = new StringBuffer();
		sb.append("import java.io.Serializable;\n");
		sb.append("import java.util.Date;\n\n");

		return sb.toString();

	}

	/**
	 * @return
	 */

	private static String getPachagePath() {
		return "package " + Entity2Store.replace("src/", "").replace('/', '.')
				+ ";\n\n";

	}

	/**
	 * @return
	 */

	private static String getCopyRight() {

		StringBuffer cr = new StringBuffer("/**");
		cr.append("\n");
		cr.append("*/");
		cr.append("\n");
		cr.append("\n");
		cr.append("\n");
		return cr.toString();

	}

	/**
	 * @return
	 */

	private static List<String> getTables() {

		conn = getConn();
		try {
			stat = conn.createStatement();
			ResultSet rs = stat.executeQuery(tablesSql);
			while (rs.next()) {
				tables.add(rs.getString(1));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return tables;

	}

	/**
	 * @return
	 */

	private static Connection getConn() {

		if (null != conn) {
			return conn;
		}
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, username, password);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();

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

		}
		return conn;

	}

}

// end

 

其实这小工具早就想放出来了,但是考虑下,netbean自带的有这个工具,eclipse好像也有(需要插件)

myeclipse更不用说了,必须有,不过要是不知道的人,用着也挺不方便,

 

为什么要写这个东西?

我们开发的时候用的是eclipse,尝试了安装插件来完成,但是没有成功,之前在上家公司的时候,boss用一个晚上搞出来的东西,自己也想试试,其实自从boss写出来之后一直有这个冲动,boss是用python写的,

这次做项目的机会,自己写了一个,

总共花费2天不到的时间吧,看来boss就是boss,不得不服

 

先说明一下,这个小工具并不是支持全部sql类型,有需要的可以自己扩充,

原来我想把这个工具优化一下,写成配置文件的方式,后来就一拖再拖,直到现在。

 

欢迎随便转发,使用,修改,不过请注明原文出出。

欢迎拍砖,

 

 

附加:

DB2查询所有表明的sql:select tabname from syscat.tables where tabschema ='DB2ADMIN' and tabname like '%TMP1'

 

 

-------------------------------------------------------------------------------------------------------------

 

今天更新个小版本,添加对Types.REAL类型的支持,

今天测试时,在mysql里面,mysql的数据类型是float,

所以代码里面也按照Types.REAL对应float来做的

 

同时实现了,包名和文件路径不同的设置,如果不单独设置包名,则默认和文件路径相同

 

package com.areashop;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author q821424508@sina.com
 * @version 1.1
 * 
 */

public class Table2Entity {

	private static String pakagePath="model";
	private static String Entity2Store = "src/main/java/model";// 以项目名为根目录
	//private static String tablesSql = "SELECT table_name FROM information_schema.tables WHERE table_schema ='common' AND NOT table_name  LIKE 'sys%'";
	private static String tablesSql = "SELECT table_name FROM information_schema.tables WHERE table_schema ='property' ";
	private static List<String> tables = new ArrayList<String>();
	private static String url = "jdbc:mysql://127.0.0.1/property?useUnicode=true&characterEncoding=utf8";
	private static String driver = "com.mysql.jdbc.Driver";
	private static String username = "root";
	private static String password = "";
	private static String sql = "select * from ";
	private static String author = "q821424508";

	private static Connection conn = null;
	private static Statement stat = null;

	public static void main(String[] args) {
		System.out.println("---begin---");
		init();
		table2Entity();
		System.out.println("---end---");
	}

	/**
     */

	private static void init() {
		File f = new File(Entity2Store);
		if (!f.exists()) {
			f.mkdirs();
		}
	}

	/**
     */

	private static void table2Entity() {
		tables = getTables();
		if (null != tables && tables.size() > 0) {
			for (String tableName : tables) {
				doTable2Entity(tableName);
			}
		}
	}

	/**
     */

	private static void doTable2Entity(String tableName) {
		String sql1 = sql + tableName;
		System.out.println("tableName = " + tableName + "\n");
		conn = getConn();
		try {
			stat = conn.createStatement();
			ResultSet rs = stat.executeQuery(sql1);
			ResultSetMetaData metaDate = rs.getMetaData();
			int count = metaDate.getColumnCount();

			File classFile = getCF(tableName);

			FileWriter fw = new FileWriter(classFile, true);
			BufferedWriter bw = new BufferedWriter(fw);

			StringBuffer sbFields = new StringBuffer();
			
			//toString 方法
			StringBuffer toString = new StringBuffer("\tpublic String toString(){\n");
			toString.append("\t\tString str=\"{");
			
			for (int j = 0; j < count; j++) {
				String columnName = metaDate.getColumnName(j + 1);
				int type = metaDate.getColumnType(j + 1);
				System.out.println(columnName + " : " + type);
				sbFields.append(column2field(columnName, type));
				
				toString.append(""+column2fieldName(columnName)+":'\" + "+column2fieldName(columnName)+" + \"',\" + \"");
				
			}
			
			bw.write(sbFields.toString());
			
			//toString.replace(toString.length()-1, toString.length(), "");
			
			toString.replace(toString.length()-8, toString.length(), "");
			
			toString.append("\"'}\";\n");
			
			toString.append("\t\treturn str;\n\t}\n");
			
			
			bw.write(toString.toString());
			
			
			bw.write("\n}\n");
			bw.close();
			fw.close();

			System.out.println("---------------------------------");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	/**
	 * @param columnName
	 * @param type
	 * @return
	 */

	private static String column2field(String columnName, int type) {
		String field = "";
		String getseter = "";

		String fieldName = column2fieldName(columnName);

		field = getField(fieldName, type);
		getseter = getGetseter(fieldName, type);

		return field + "\n" + getseter;

	}

	/**
	 * @param columnName
	 * @param type
	 * @return
	 */

	private static String getGetseter(String columnName, int type) {
		String filedName = firstChar2Upper(columnName);
		StringBuffer sb = new StringBuffer("");
		switch (type) {
		case Types.BIGINT:
			sb.append("\tpublic long get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(long ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.INTEGER:
			sb.append("\tpublic int get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(int ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;

		case Types.CHAR:
			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.DATE:
			sb.append("\tpublic Date get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(Date ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.DOUBLE:
			sb.append("\tpublic double get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(double ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.FLOAT:
			sb.append("\tpublic float get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(float ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.REAL:
			sb.append("\tpublic float get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(float ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.LONGNVARCHAR:

			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.LONGVARCHAR:
			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.NVARCHAR:
			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.SMALLINT:
			sb.append("\tpublic int get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(int ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.TIMESTAMP:
			sb.append("\tpublic Date get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(Date ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.TINYINT:
			sb.append("\tpublic int get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(int ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.NUMERIC:
			sb.append("\tpublic long get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(long ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.VARCHAR:
			sb.append("\tpublic String get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(String ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;
		case Types.BLOB:
			sb.append("\tpublic byte[] get");
			sb.append(filedName);
			sb.append("(){\n");
			sb.append("\t\treturn ");
			sb.append("this.");
			sb.append(columnName);
			sb.append(";\n");
			sb.append("\t}\n");

			sb.append("\tpublic void set");
			sb.append(filedName);
			sb.append("(byte[] ");
			sb.append(columnName);
			sb.append("){\n");
			sb.append("\t\t");
			sb.append("this.");
			sb.append(columnName);
			sb.append("=" + columnName);
			sb.append(";\n");
			sb.append("\t}\n\n");
			break;

		default:
			break;
		}
		return sb.toString();

	}

	/**
	 * @param columnName
	 * @param type
	 * @return
	 */

	private static String getField(String columnName, int type) {

		StringBuffer sb = new StringBuffer("\tprivate ");
		switch (type) {
		case Types.BIGINT:
			sb.append("long ").append(columnName);
			break;
		case Types.INTEGER:
			sb.append("int ").append(columnName);
			break;
		case Types.NUMERIC:
			sb.append("long ").append(columnName);
			break;
		case Types.CHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.DATE:
			sb.append("Date ").append(columnName);
			break;
		case Types.DOUBLE:
			sb.append("double ").append(columnName);
			break;
		case Types.FLOAT:
			sb.append("float ").append(columnName);
			break;
		case Types.REAL:
			sb.append("float ").append(columnName);
			break;
		case Types.LONGNVARCHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.LONGVARCHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.NVARCHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.SMALLINT:
			sb.append("int ").append(columnName);
			break;
		case Types.TIMESTAMP:
			sb.append("Date ").append(columnName);
			break;
		case Types.TINYINT:
			sb.append("int ").append(columnName);
			break;
		case Types.VARCHAR:
			sb.append("String ").append(columnName);
			break;
		case Types.BLOB:
			sb.append("byte[] ").append(columnName);
			break;

		default:
			System.err.println("columnName = " + columnName + " : type = "
					+ type);
			break;
		}

		sb.append(";\n");
		return sb.toString();

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static File getCF(String tableName) {

		File classFile = new File(Entity2Store + File.separator
				+ table2EntityName(tableName) + ".java");

		try {
			FileWriter fw = new FileWriter(classFile);
			BufferedWriter bw = new BufferedWriter(fw);
			String cr = getCopyRight();
			String packagePath = getPachagePath();
			String importPath = getImportPath();
			String clazzName = getClassName(tableName);

			bw.write(cr);
			bw.write(packagePath);
			bw.write(importPath);
			bw.write(clazzName);

			bw.flush();
			bw.close();
			fw.close();

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

		return classFile;

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static String getClassName(String tableName) {
		String className = table2EntityName(tableName);
		className = "public class " + className + " implements Serializable{\n";
		className += "\n\t" + "private static final long serialVersionUID ="
				+ (tableName + (Math.random() * 90000000 + 10000000)).hashCode()+"l";
		className += ";\n\n";

		return className;

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static String table2EntityName(String tableName) {
		tableName = column2fieldName(tableName);
		tableName = firstChar2Upper(tableName);
		return tableName;

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static String firstChar2Upper(String tableName) {
		String firstChar = tableName.substring(0, 1);
		String entityName = tableName.replaceFirst(firstChar, firstChar
				.toUpperCase());
		return entityName;

	}

	/**
	 * @param tableName
	 * @return
	 */

	private static String column2fieldName(String columnName) {
		columnName = columnName.toLowerCase();
		while (columnName.contains("_")) {
			int i = columnName.indexOf('_');
			String char2Upper = columnName.substring(i + 1, i + 2);
			columnName = columnName.replaceFirst("_" + char2Upper, char2Upper
					.toUpperCase());
		}

		while (columnName.contains("-")) {
			int i = columnName.indexOf('-');
			String char2Upper = columnName.substring(i + 1, i + 2);
			columnName = columnName.replaceFirst("-" + char2Upper, char2Upper
					.toUpperCase());
		}

		return columnName;

	}

	/**
	 * @return
	 */

	private static String getImportPath() {

		StringBuffer sb = new StringBuffer();
		sb.append("import java.io.Serializable;\n");
		sb.append("import java.util.Date;\n\n");

		return sb.toString();

	}

	/**
	 * @return
	 */

	private static String getPachagePath() {
		if(null!=pakagePath){
			return  "package " +pakagePath.replace('/', '.')+ ";\n\n";
		}
		return "package " + Entity2Store.replace("src/", "").replace('/', '.')
				+ ";\n\n";

	}

	/**
	 * @return
	 */

	private static String getCopyRight() {

		StringBuffer cr = new StringBuffer("/**");
		cr.append("\n");
		cr.append("*/");
		cr.append("\n");
		cr.append("\n");
		cr.append("\n");
		return cr.toString();

	}

	/**
	 * @return
	 */

	private static List<String> getTables() {

		conn = getConn();
		try {
			stat = conn.createStatement();
			ResultSet rs = stat.executeQuery(tablesSql);
			while (rs.next()) {
				tables.add(rs.getString(1));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return tables;

	}

	/**
	 * @return
	 */

	private static Connection getConn() {

		if (null != conn) {
			return conn;
		}
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, username, password);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();

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

		}
		return conn;

	}

}

// end

 

0
2
分享到:
评论
9 楼 q821424508 2013-07-17  
asd7391606 写道
楼主有没有sql server用的,mysql我没学。

不好意思,写代码久了,忘记了,里面有原生的sql语句,用来查询表名的,不过你学的sqlserver,应该这一句没问题吧。
8 楼 q821424508 2013-07-17  
javatozhang 写道
lz给的例子很好。我话费一个小时时间已经搞通了,但是不是太喜欢定义字段和该字段的setter和getter方法在一起,还是喜欢分开的字段列表列出所有字段,然后setter和getter方法一次列出来。结合自己实际的应用再修改修改完全可以使用,谢谢lz!向lz学习。

不好意思,由于写的比较仓促,后来也不想搞了,基本上没有注释。
7 楼 q821424508 2013-07-17  
javatozhang 写道
lz给的例子很好。我话费一个小时时间已经搞通了,但是不是太喜欢定义字段和该字段的setter和getter方法在一起,还是喜欢分开的字段列表列出所有字段,然后setter和getter方法一次列出来。结合自己实际的应用再修改修改完全可以使用,谢谢lz!向lz学习。

共同学习吧,希望对你有帮助
6 楼 q821424508 2013-07-17  
jaikuai 写道
建议楼主选择freeMarker模版生成

真没用过freeMarker,有好的选择,当然可以,也推荐使用,我这就练手,献丑了
5 楼 q821424508 2013-07-17  
asd7391606 写道
楼主有没有sql server用的,mysql我没学。

没有sql server的,这个也不是mysql的是oracle的。对java来说,无所谓数据库类型。
改一下应该可以用的
4 楼 javatozhang 2013-07-10  
jaikuai 写道
建议楼主选择freeMarker模版生成

二楼有什么高见愿闻其详。
3 楼 javatozhang 2013-07-10  
lz给的例子很好。我话费一个小时时间已经搞通了,但是不是太喜欢定义字段和该字段的setter和getter方法在一起,还是喜欢分开的字段列表列出所有字段,然后setter和getter方法一次列出来。结合自己实际的应用再修改修改完全可以使用,谢谢lz!向lz学习。
2 楼 jaikuai 2013-07-10  
建议楼主选择freeMarker模版生成
1 楼 asd7391606 2013-07-09  
楼主有没有sql server用的,mysql我没学。

相关推荐

    数据库表结构文档自动生成工具

    数据库表结构文档自动生成工具; 1.增加了对excel文件的支持,可以同时生成word 和excel文件 2.运行方式DocMain.java ExcelMain.java 3.生成excel文件的模板需要特别注意:xls模板中行数必须足够大,eg.ss:...

    mybatis根据数据库表自动生成SQL、实体类、mapper文件工具

    基于eclipse上,ssm项目,可根据数据库表自动生成SQL、实体类、mapper文件工具

    基于数据库的自动化生成工具,自动生成JavaBean、数据库文档、框架代码等(v5.8.8版_JAR)

    TableGo可以根据数据库表结构自动生成JavaBean、MyBaits的Mapper映射配置文件、数据库设计文档,更重要的是可以根据每个项目的不同开发框架编写自定义模板生成各模块的结构性代码,让开发人员的开发效率提高60%以上...

    根据数据库sql生成java代码代码生成器

    1、本地执行代码生成工具,可生成controller、service、repository、entity、mapper、mapper.xml的增删改查代码。生成的文件复制到项目路径中,修修改改即可实现大部分CRUD功能。 2、工具不需要导入到项目中,本地...

    基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)

    13、修复使用MySQL数据库生成的数据长度不正确的问题 14、生成自定义文件功能可以不配置数据源,不选择自定义模板生成文件,可单独用于文件操作,只要不选择模板,JSON参数中也不配置模板就不会连数据库 15、修复...

    java代码自动生成工具

    1.根据Mysql数据库的表生成java实体类,包括注释 2.将Excel表格数据生成java实体类,包括注释 3.包括源文件和生成好的jar工具,和示例文件 技术: java、log4j、poi表格操作、jdbc数据库操作、freeMarker模板使用

    hibernate 配置文件 java类 生成工具

    改进如下: 1. 增加了多数据类型的支持; 2. 增加了toJson 方法,可以将对象转换为 json数据格式;...7. 完美支持数据库注解自动生成到配置文件和JAVABEAN 下个版本的计划: 1.增加数据库列表功能 2.增加主键策略

    Eclipse Plugins 根据数据库表结构生成javabean的eclipse插件

    支持oracle 和 mysql两种数据库。 支持oracle指定表空间生成。 支持批量生成javabean。 支持重写“toString”方法(返回json格式字符串)。 支持国际化。 支持返回字段属性数组。 支持java元注释。 支持生成...

    代码自动生成工具(vb类 java类 sql存储过程...)

    根据自定义模板通过数据库表、视图和存储过程批量生成代码, 模板编辑和代码查看支持语法高亮 (Java, VB, T-SQL) 可以新增语法文件,文件格式类似于 EditPlus 软件附带模板包括: VB 三层结构中实体和...

    JAVA代码生成工具

    数据库表配置,用于自定义生成器模板引用的table变量,配置文件必须存放在classpath: generator_config/table/table_name.xml (该文件生成器可以生成,自己再自定义修改) &lt;!-- &lt;数据库表名 className="类名称" ...

    MySQL表自动生成Java实体类

    配置好数据库连接字符串和输出路径,自动把MySQL数据表生成相应的Java实体类。附上数据库。来源是参考别人的代码,有添加了自动获取表名的功能,不需要手动写表名,非常方便。

    数据库-实体自动生成工具

    SSM 把数据库表自动生成实体类 DAO 映射XML文件。该工具类有我自己的修改。支持一件清除已经生成的类垃圾文件

    基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)

    10、生成自定义文件功能增强,添加更多可配置的参数 11、修复生成数据库文档中有中文错误的问题 12、优化对MySQL8.x的支持,现在可以使用MySQL8的新驱动包了 13、优化界面显示效果并让所有界面都能用鼠标拖动...

    根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第10版)

    我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...

    mybatis自动生成工具java版.zip

    3、 然后双击 “代码生成器.jar" (和运行.exe文件一样)mybatis自动生成工具generator,提高开发效率,自动生成实体BEAN、DAO。需要修改数据库驱动包位置,数据库链接URL、用户名、密码需要修改: 生成模型的包...

    mybatis自动生成工具

    一. 生成器模板路径可以引用相关变量 ... 数据库表配置,用于自定义生成器模板引用的table变量,配置文件必须存放在classpath: generator_config/table/table_name.xml (该文件生成器可以生成,自己再自定义修改)

    基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版_EXE)

    9、生成数据库文档功能新增生成标题目录功能。 10、新增主要UI界面的界面大小配置功能,可根据需求在配置文件中调整UI界面大小。 11、新增友情捐赠界面,项目的发展离不开您的支持,无论捐赠金额多少都足够表达您...

    java_to_cad.rar(最后生成.dxf文件)

    java代码实现cad图纸,自动生成工程cad施工图纸,可以按比例生成A3,A2,A1图纸,最大的优点的子定义,以及使用了ssm框架,直接对数据库进行交互,满足对cad图纸的要求

    SpringBoot驱动的数据库文档自动生成Java源码

    项目概述:这是一个基于SpringBoot的数据库文档自动生成工具,旨在通过简单的配置,快速生成详尽的数据库文档。该项目采用Java语言开发,包含39个文件,其中Java源文件22个,辅助以HTML、图像资源以及配置文件等。 ...

    JAVA代码自动生成工具

    根据数据名称自动生成Java代码,生成mapper(xml文件)、Dao文件(entity、mapper、service、serviceImpl、controller)文件 2、适用用范围 数据库:MySQL5.7.16 代码运行环境:MyEclipse2019+Java8 3、运行命令 ...

Global site tag (gtag.js) - Google Analytics