自动成hbm文件和Pojo Bean文件的工具类

15 篇文章 0 订阅
9 篇文章 0 订阅
自动成hbm文件和Pojo Bean文件的工具类 
输入
1,tableName 
2,beanName
3,pkgName
4,root_path
5,pkColumn
输出
1、生成xxx.hbm.xml文件
2、生成xxx.java文件


import java.io.FileWriter;

import java.sql.Connection;

import java.sql.DatabaseMetaData;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.Statement;

import java.sql.Types;

import java.util.Date;

import java.util.List;



public class Table2BeanUtil 

{

	public static String tableName = "vmm_ag";

	public static String beanName="AG";

	public static String pkgName = "com.utstar.nms.vmm.spring.domain";

	public static String root_path = "src/com/utstar/nms/vmm/spring/domain/";

	public static String pkColumn=DatabaseUtil.getPKColumn(tableName);



	public Table2BeanUtil(String tableName,String beanName,String pkgName,String rootPath,String pkColumn)

	{

		this.tableName = tableName;

		this.beanName=beanName;

		this.pkgName = pkgName;

		this.root_path = rootPath;

		this.pkColumn=pkColumn;

	}

	  public static void main(String[] args) throws Exception

	  {

			String tableName = "vmm_ag";

			String beanName="AG";

			String pkgName = "com.utstar.nms.vmm.spring.domain";

			String root_path = "src/com/utstar/nms/vmm/spring/domain/";

			String pkColumn="SN";

			

		  Table2BeanUtil aTable2BeanUtil = new Table2BeanUtil( tableName, beanName, pkgName, root_path, pkColumn);

		  aTable2BeanUtil.genBeanAndHbmFile();

	  }

	  

	  //String tableName,String beanName,String pkgName,String root_path

	    public void genBeanAndHbmFile() throws Exception

	    {

    	    System.out.println("root_path:"+root_path);

	        //new a database connection

    	    DatabaseUtil aDatabaseUtil = new DatabaseUtil();   	    

	        Connection conn = aDatabaseUtil.getConnection();

	        

	        Statement st = conn.createStatement();

	        String sql = "select * from " + tableName + " where 1 = 2";

	        ResultSet rs = st.executeQuery(sql);

	        

	        //get the metaData from ResultSet

	        ResultSetMetaData rsMetaData = rs.getMetaData();



	        String hbmFile = getHbmFile(root_path);

	        String beanFile = getBeanFile(root_path);

	        genBeanFile(beanFile,rsMetaData);

	        genHbmFile(hbmFile,rsMetaData);

	        rs.close();

	        conn.close();

	        

	        System.out.println("output hbm file: " + hbmFile);

	        System.out.println("output bean file: " + beanFile);

	        

	    }

	    public void genBeanFile(String beanFile,ResultSetMetaData rsMetaData) throws Exception

	    {

	        FileWriter outBean = new FileWriter(beanFile);

	        outBean.write("package " + pkgName + ";");

	        outBean.write(" /n");

	        outBean.write(" /n");

	        outBean.write("public class " + beanName);

	        outBean.write(" /n");

	        outBean.write("{");

	        outBean.write(" /n");

            

	        for (int iCol = 1; iCol <= rsMetaData.getColumnCount(); iCol++) 

	        {

	        	String colName = rsMetaData.getColumnName(iCol);

	            int colType = rsMetaData.getColumnType(iCol);

	            String propName = getPropertyName(colName);	            

	            String javaType = getJavaType(colType).getSimpleName();

	            

        	    outBean.write("    private " + javaType + " " + propName + "; ");

	            outBean.write(" /n");	

			}

	        outBean.write(" /n");	

	        for(int iCol = 1; iCol <= rsMetaData.getColumnCount(); iCol++)

	        {

	    

	        	String colName = rsMetaData.getColumnName(iCol);

	            int colType = rsMetaData.getColumnType(iCol);

	            String propName = getPropertyName(colName);

	            String javaType = getJavaType(colType).getSimpleName();



	            outBean.write("public " + javaType + " " + getGetterMethod(propName) + "()");

	            outBean.write(" /n");

	            outBean.write(" {");

	            outBean.write(" /n");

	            outBean.write("        return this." + propName + ";");

	            outBean.write(" /n");

	            outBean.write(" }");

	            outBean.write(" /n");

	            outBean.write(" /n");



	            outBean.write("public void " + getSetterMethod(propName) + "(" + javaType + " " + propName + ")");

	            outBean.write(" /n");

	            outBean.write(" {");

	            outBean.write(" /n");

	            outBean.write("        this." + propName + " = " + propName + ";");

	            outBean.write(" /n");

	            outBean.write(" }");

	            outBean.write(" /n");

	            outBean.write(" ");

	            

	        }

	        outBean.write(" /n");

	        outBean.write("}");

	        outBean.flush();

	        outBean.close();	

	    }

	    public void genHbmFile(String hbmFile,ResultSetMetaData rsMetaData) throws Exception

	    {

	    	FileWriter outHbm = new FileWriter(hbmFile);

	        outHbm.write("<?xml version=/"1.0/" encoding=/"UTF-8/"?> ");

	        outHbm.write(" /n");

	        outHbm.write("<!DOCTYPE hibernate-mapping PUBLIC");

	        outHbm.write(" /"-//Hibernate/Hibernate Mapping DTD 3.0//EN/"");

	        outHbm.write(" /n");

	        outHbm.write(" /"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd/">");

	        outHbm.write(" /n /n");

	        outHbm.write("<hibernate-mapping>");

	        outHbm.write(" /n");

	        outHbm.write("<class name=/"" + pkgName + "." + beanName +"/""+ " table=/"" + tableName + "/">");

	        outHbm.write(" /n");

	        

	        for(int iCol = 1; iCol <= rsMetaData.getColumnCount(); iCol++)

	        {

	    

	        	String colName = rsMetaData.getColumnName(iCol);

	            int colType = rsMetaData.getColumnType(iCol);

	            String propName = getPropertyName(colName);

	            String javaType = getJavaType(colType).getSimpleName();

	            if(pkColumn.equalsIgnoreCase(colName))

	            {

	            	outHbm.write("    <id name=/"" + propName + "/" column=/"" + colName + "/"/>");

	            }

	            else

	            {

	            outHbm.write("    <property name=/"" + propName + "/" column=/"" + colName + "/"/>");

	            }

	            outHbm.write(" /n");

	            

	        }



	        outHbm.write(" </class>");

	        outHbm.write(" /n");

	        outHbm.write("</hibernate-mapping>");

	        outHbm.flush();

	        outHbm.close();    

	    }

	    

	    private static String getHbmFile(String root_path)

	    {

	        return root_path + beanName + ".hbm.xml";

	    }

	    

	    private static String getBeanFile(String root_path)

	    {

	        return root_path + beanName + ".java";

	    }

	    

	    private static String getBeanName(String tableName)

	    {

	        String[] segs = tableName.split("_");

	        String beanName = "";

	        for(int i = 0; i < segs.length; i++)

	        {

	            beanName += segs[i].substring(0, 1).toUpperCase() + segs[i].substring(1, segs[i].length()).toLowerCase();

	        }

	        return beanName;

	    }



	    private static String getPropertyName(String col_name)

	    {

	        String[] segs = col_name.split("_");

	        String propName = "";

	        for(int i = 0; i < segs.length; i++)

	        {

	            if(i == 0)

	                propName += segs[i].toLowerCase();

	            else

	                propName += segs[i].substring(0, 1).toUpperCase() + segs[i].substring(1, segs[i].length()).toLowerCase();

	        }

	        return propName;

	    }



	    private static String getGetterMethod(String prop_name)

	    {

	        return "get" + prop_name.substring(0, 1).toUpperCase() + prop_name.substring(1, prop_name.length());

	    }



	    private static String getSetterMethod(String prop_name)

	    {

	        return "set" + prop_name.substring(0, 1).toUpperCase() + prop_name.substring(1, prop_name.length());

	    }

	    

	    @SuppressWarnings("unchecked")

	    private static Class getJavaType(int colType)

	    {

	       

	    	switch(colType)

	        {

	            case Types.BIT:

	            case Types.TINYINT:

	            case Types.SMALLINT:

	                return Short.class;

	            case Types.INTEGER:

	                return Integer.class;

	            case Types.BIGINT:

	            case Types.NUMERIC:

	                return Long.class;

	            case Types.CHAR:

	            case Types.VARCHAR:

	            case Types.CLOB:

	            case Types.LONGVARCHAR:

	                return String.class;

	            case Types.FLOAT:

	                return Float.class;

	            case Types.DOUBLE:

	                return Double.class;

	            case Types.DATE:

	            case Types.TIME:

	            case Types.TIMESTAMP:

	                return Date.class;

	            default:

	                return Object.class;

	        }

	    }

	    

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值