mysql根据数据库自动生成实体(dto,service,impl,mybatis,xml)



 

package com.csair.test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GenerateEntity {

	private String url = "jdbc:mysql://localhost:3306/database";
	private String username = "root";
	private String password = "root";
	private String driverClass = "com.mysql.jdbc.Driver";
	private DatabaseMetaData dbMetaData = null;
	private String packageName = "com.csair.test.dto;";
	private String path = "C:\\Users\\ppt\\Desktop\\test\\";
	
	/**
	 * @Description: 获取表对应的所有列
	 * @author: ppt
	 * @date: 2015-3-16 上午10:13:17
	 * @param tableName
	 * @return: void
	 */
	public void getTableColumns(String tableName) {
		try {
			String ACCESS_DOMAIN = "private";
			ResultSet resultSet = dbMetaData.getColumns(null, null, tableName, "%");
			while(resultSet.next()) {  
	            ResultSet resultSetColumn = dbMetaData.getColumns(null, null, tableName, null);  
	            String className = getFormatString(tableName,true);
	            StringBuffer header = new StringBuffer("package " + packageName + "\n\n");
	            StringBuffer footer = new StringBuffer();
	            StringBuffer contentBuffer = new StringBuffer();
	            contentBuffer.append("public class " + className + "{\n");  
	            while(resultSetColumn.next()) {  
	                contentBuffer.append("\t"+ACCESS_DOMAIN + " ");  
	                String columnType = resultSetColumn.getString("TYPE_NAME");  
	                String COLUMN_TYPE = getColumnType(columnType);
	                if("Date".equals(COLUMN_TYPE)) {
	                	header.append("import java.util.Date;\n");
	                }
	                contentBuffer.append(COLUMN_TYPE + " ");  
	                String columnName = resultSetColumn.getString("COLUMN_NAME"); 
	                String remark = resultSetColumn.getString("REMARKS");
	                columnName = this.getFormatString(columnName, false);
	                footer.append(getSetGenerater(columnName, COLUMN_TYPE));
	                contentBuffer.append(columnName+";\t//"+remark+"\n");  
	            } 
	            contentBuffer.append("\n\n"+footer);
	            contentBuffer.append("}");  
	            header.append("\n");
	            header.append(contentBuffer);
	            this.outputToFile(className+".java", header.toString());  
	        }  
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public GenerateEntity() {
		try {
			Class.forName(driverClass);
			Connection conn = DriverManager.getConnection(url, username, password);
			dbMetaData = conn.getMetaData();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	  
	/**
	 * @Description: 获取所以的表
	 * @author: ppt
	 * @date: 2015-3-16 上午10:12:57
	 * @return: void
	 */
	public List<String> getAllTableList() {  
		List<String> tableList = new ArrayList<String>();
        try {  
            String[] types = { "TABLE" };  
            ResultSet rs = dbMetaData.getTables(null, null, "%", types);  
            while (rs.next()) {  
                String tableName = rs.getString("TABLE_NAME");  //表名 
                tableList.add(tableName);
            }  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }
        return tableList;
    }  
	
	 /** 
     * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 
     * @param name 
     * @param flag 
     * @return 
     */  
    private String getFormatString(String name, boolean flag) {  
        name = name.toLowerCase();  
        String[] nameTemp = name.split("_");  
        StringBuffer buffer = new StringBuffer();  
        for(String str : nameTemp) {  
            String head = str.substring(0, 1).toUpperCase();  
            String tail = str.substring(1);  
            buffer.append(head+tail);  
        }  
        StringBuffer result = null;  
        if(!flag) {  
            result = new StringBuffer();  
            String head = buffer.substring(0, 1).toLowerCase();  
            String tail = buffer.substring(1);  
            result.append(head+tail);  
            return result.toString();  
        }  
        return buffer.toString();  
    }  
	/** 
     * 把String内容写到文件 
     * @param fileName 
     * @param content 
     */  
    private void outputToFile(String fileName, String content) {  
        OutputStream os = null;  
        try {  
            os = new FileOutputStream(path+fileName);  
        } catch (FileNotFoundException e1) {  
            e1.printStackTrace();  
        }  
        byte[] b = content.getBytes();  
        try {  
            os.write(b);  
            os.flush();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                os.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    /** 
     * 数据库类型转为java类型 
     * @param column 
     * @return 
     */  
    private String getColumnType(String column) {  
        String COLUMN_TYPE = null;
    	if("VARCHAR".equals(column)) {  
            COLUMN_TYPE = "String";  
        } else if("BIGINT".equals(column)) {  
            COLUMN_TYPE = "Long";  
        } else if("DATETIME".equals(column)) {  
            COLUMN_TYPE = "Date";  
        } else if("INT".equals(column) || "INT UNSIGNED".equals(column)) {  
            COLUMN_TYPE = "Integer";  
        } else if("BIGINT UNSIGNED".equals(column)) {  
            COLUMN_TYPE = "Long";  
        } else if("TINYINT UNSIGNED".equals(column)) {  
            COLUMN_TYPE = "Short";  
        } else if("DECIMAL".equals(column) || "FLOAT".equals(column) || "DOUBLE".equals(column)) {  
            COLUMN_TYPE = "Double";  
        } else if("TEXT".equals(column) || "MEDIUMTEXT".equals(column) || "LONGTEXT".equals(column)) {  
            COLUMN_TYPE = "String";  
        } else if("TIMESTAMP".equals(column) || "DATE".equals(column) || "DATETIME".equals(column)) {  
            COLUMN_TYPE = "Date";  
        } else if("TINYINT".equals(column)) {  
            COLUMN_TYPE = "Short";  
        } else if("DECIMAL UNSIGNED".equals(column)) {  
            COLUMN_TYPE = "Double";  
        } else if("SMALLINT".equals(column)) {  
            COLUMN_TYPE = "Short";  
        } else if("BIT".equals(column)) {  
            COLUMN_TYPE = "Short";  
        } else if("CHAR".equals(column)) {  
            COLUMN_TYPE = "String";  
        } else if("VARBINARY".equals(column)) {  
            COLUMN_TYPE = "byte";  
        } else if("BLOB".equals(column)) {  
            COLUMN_TYPE = "byte";  
        }
        return COLUMN_TYPE;  
    }
    
    private String getSetGenerater(String columnName, String columnType) {
    	StringBuffer sb = new StringBuffer();
		sb.append("\tpublic " + columnType + " get" +columnName.substring(0, 1).toUpperCase()+columnName.substring(1, columnName.length()) + "() {\n");
		sb.append("\t\treturn " + columnName + ";\n");
		sb.append("\t}\n\n");
		sb.append("\tpublic void set" + columnName.substring(0, 1).toUpperCase()+columnName.substring(1, columnName.length()));
		sb.append("("+columnType +" " + columnName +") {\n");
		sb.append("\t\tthis." + columnName + " = " + columnName + ";\n");
		sb.append("\t}\n\n");
		return sb.toString();
    }
    
	public static void main(String[] agrs) {
		GenerateEntity aa = new GenerateEntity();
		List<String> tableList = aa.getAllTableList();
		for(String tableName : tableList) {
			aa.getTableColumns(tableName);
		}
//		aa.getTableColumns("REPORT_REQ");
	}
	
	
	

}
接口
package com.csair.test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GenerateService {

	private String url = "jdbc:mysql://localhost:3306/database";
	private String username = "root";
	private String password = "root";
	private String driverClass = "com.mysql.jdbc.Driver";
	private DatabaseMetaData dbMetaData = null;
	private String packageName = "com.csair.test.service;";
	private String packageNameDto = "com.csair.test.dto";
	private String path = "C:\\Users\\ppt\\Desktop\\test\\";
	
	public GenerateService() {
		try {
			Class.forName(driverClass);
			Connection conn = DriverManager.getConnection(url, username, password);
			dbMetaData = conn.getMetaData();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	  
	/**
	 * @Description: 获取所有的表
	 * @author: ppt
	 * @date: 2015-3-16 上午10:12:57
	 * @return: void
	 */
	public List<String> getAllTableList() {  
		List<String> tableList = new ArrayList<String>();
        try {  
            String[] types = { "TABLE" };  
            ResultSet rs = dbMetaData.getTables(null, null, "%", types);  
            while (rs.next()) {  
                String tableName = rs.getString("TABLE_NAME");  //表名 
                tableList.add(tableName);
            }  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }
        return tableList;
    }  
	
	 /** 
     * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 
     * @param name 
     * @param flag 
     * @return 
     */  
    private String getFormatString(String name, boolean flag) {  
        name = name.toLowerCase();  
        String[] nameTemp = name.split("_");  
        StringBuffer buffer = new StringBuffer();  
        for(String str : nameTemp) {  
            String head = str.substring(0, 1).toUpperCase();  
            String tail = str.substring(1);  
            buffer.append(head+tail);  
        }  
        StringBuffer result = null;  
        if(!flag) {  
            result = new StringBuffer();  
            String head = buffer.substring(0, 1).toLowerCase();  
            String tail = buffer.substring(1);  
            result.append(head+tail);  
            return result.toString();  
        }  
        return buffer.toString();  
    }  
	/** 
     * 把String内容写到文件 
     * @param fileName 
     * @param content 
     */  
    private void outputToFile(String fileName, String content) {  
        OutputStream os = null;  
        try {  
            os = new FileOutputStream(path+fileName);  
        } catch (FileNotFoundException e1) {  
            e1.printStackTrace();  
        }  
        byte[] b = content.getBytes();  
        try {  
            os.write(b);  
            os.flush();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                os.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    
    private void getService() {
    	List<String> tableList = getAllTableList();
    	for(String tableName : tableList) {
    		String table = getFormatString(tableName, true);
    		String className = table + "Service";
    		StringBuffer sb = new StringBuffer();
    		sb.append("package " + packageName + "\n\n");
    		sb.append("import " + packageNameDto + "." + table + ";\n");
    		sb.append("import java.util.List;\n");
    		sb.append("import javax.ws.rs.POST;\n");
    		sb.append("import javax.ws.rs.GET;\n");
    		sb.append("import javax.ws.rs.PathParam;\n");
    		sb.append("import javax.ws.rs.Path;\n");
    		sb.append("import javax.ws.rs.Produces;\n");
    		sb.append("import javax.ws.rs.core.MediaType;\n");
    		sb.append("\n@Path(\"/" + className.substring(0, 1).toLowerCase() + className.substring(1) + "\")\n");
    		sb.append("public interface " + className + " {\n\n");
    		
    		sb.append("\t//增加实体\n");
    		sb.append("\t@POST\n");
    		sb.append("\t@Path(\"addEntity\")\n");
    		sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");
    		sb.append("\tpublic long addEntity(" + table + " dto) throws Exception;\n\n");
    		
    		sb.append("\t//删除实体\n");
    		sb.append("\t@GET\n");
    		sb.append("\t@Path(\"deleteEntity/{id}\")\n");
    		sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");
    		sb.append("\tpublic boolean deleteEntity(@PathParam(\"id\") long id) throws Exception;\n\n");
    		
    		sb.append("\t//修改实体\n");
    		sb.append("\t@POST\n");
    		sb.append("\t@Path(\"updateEntity\")\n");
    		sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");
    		sb.append("\tpublic long updateEntity(" + table + " dto) throws Exception;\n\n");
    		
    		sb.append("\t//查询实体\n");
    		sb.append("\t@POST\n");
    		sb.append("\t@Path(\"findEntity\")\n");
    		sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");
    		sb.append("\tpublic "+table+" findEntity(" + table + " dto) throws Exception;\n\n");
    		
    		sb.append("\t//查询实体List\n");
    		sb.append("\t@POST\n");
    		sb.append("\t@Path(\"findEntityList\")\n");
    		sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");
    		sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto) throws Exception;\n\n");
    		
    		sb.append("}\n");
    		outputToFile(className+".java", sb.toString());
    	}
    }
    
	public static void main(String[] agrs) {
		GenerateService aa = new GenerateService();
		aa.getService();
	}

}
mybatis接口

package com.csair.test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GenerateMybatisRepository {

	private String url = "jdbc:mysql://localhost:3306/database";
	private String username = "root";
	private String password = "root";
	private String driverClass = "com.mysql.jdbc.Driver";
	private DatabaseMetaData dbMetaData = null;
	private String packageName = "com.csair.test.mybatisRepository;";
	private String packageNameDto = "com.csair.test.dto";
	private String path = "C:\\Users\\ppt\\Desktop\\test\\";
	
	public GenerateMybatisRepository() {
		try {
			Class.forName(driverClass);
			Connection conn = DriverManager.getConnection(url, username, password);
			dbMetaData = conn.getMetaData();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	  
	/**
	 * @Description: 获取所有的表
	 * @author: ppt
	 * @date: 2015-3-16 上午10:12:57
	 * @return: void
	 */
	public List<String> getAllTableList() {  
		List<String> tableList = new ArrayList<String>();
        try {  
            String[] types = { "TABLE" };  
            ResultSet rs = dbMetaData.getTables(null, null, "%", types);  
            while (rs.next()) {  
                String tableName = rs.getString("TABLE_NAME");  //表名 
                tableList.add(tableName);
            }  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }
        return tableList;
    }  
	
	 /** 
     * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 
     * @param name 
     * @param flag 
     * @return 
     */  
    private String getFormatString(String name, boolean flag) {  
        name = name.toLowerCase();  
        String[] nameTemp = name.split("_");  
        StringBuffer buffer = new StringBuffer();  
        for(String str : nameTemp) {  
            String head = str.substring(0, 1).toUpperCase();  
            String tail = str.substring(1);  
            buffer.append(head+tail);  
        }  
        StringBuffer result = null;  
        if(!flag) {  
            result = new StringBuffer();  
            String head = buffer.substring(0, 1).toLowerCase();  
            String tail = buffer.substring(1);  
            result.append(head+tail);  
            return result.toString();  
        }  
        return buffer.toString();  
    }  
	/** 
     * 把String内容写到文件 
     * @param fileName 
     * @param content 
     */  
    private void outputToFile(String fileName, String content) {  
        OutputStream os = null;  
        try {  
            os = new FileOutputStream(path+fileName);  
        } catch (FileNotFoundException e1) {  
            e1.printStackTrace();  
        }  
        byte[] b = content.getBytes();  
        try {  
            os.write(b);  
            os.flush();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                os.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    
    private void getService() {
    	List<String> tableList = getAllTableList();
    	for(String tableName : tableList) {
    		String table = getFormatString(tableName, true);
    		String className = table + "MybatisDao";
    		String dto = table;
    		StringBuffer sb = new StringBuffer();
    		sb.append("package " + packageName + "\n\n");
    		sb.append("import " + packageNameDto + "." + dto + ";\n");
    		sb.append("import java.util.List;\n");
    		sb.append("\npublic interface " + className + " {\n\n");
    		
    		sb.append("\tpublic long addEntity(" + table + " dto);\n\n");
    		
    		sb.append("\tpublic boolean deleteEntity(long id);\n\n");
    		
    		sb.append("\tpublic long updateEntity(" + table + " dto);\n\n");
    		
    		sb.append("\tpublic "+table+" findEntity(" + table + " dto);\n\n");
    		
    		sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto);\n\n");
    		
    		sb.append("}\n");
//    		System.out.println(sb.toString());
    		outputToFile(className+".java", sb.toString());
    	}
    }
    
	public static void main(String[] agrs) {
		GenerateMybatisRepository aa = new GenerateMybatisRepository();
		aa.getService();
	}


}

实现impl

package com.csair.test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

public class GenerateServiceImpl {

	private String url = "jdbc:mysql://localhost:3306/database";
	private String username = "root";
	private String password = "root";
	private String driverClass = "com.mysql.jdbc.Driver";
	private DatabaseMetaData dbMetaData = null;
	private String packageName = "com.csair.test.service.impl;";
	private String packageNameService = "com.csair.test.service";
	private String packageNameDto = "com.csair.test.dto";
	private String packageNameMybatis = "com.csair.test.mybatisRepository";
	private String path = "C:\\Users\\ppt\\Desktop\\test\\";
	
	public GenerateServiceImpl() {
		try {
			Class.forName(driverClass);
			Connection conn = DriverManager.getConnection(url, username, password);
			dbMetaData = conn.getMetaData();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	  
	/**
	 * @Description: 获取所有的表
	 * @author: ppt
	 * @date: 2015-3-16 上午10:12:57
	 * @return: void
	 */
	public List<String> getAllTableList() {  
		List<String> tableList = new ArrayList<String>();
        try {  
            String[] types = { "TABLE" };  
            ResultSet rs = dbMetaData.getTables(null, null, "%", types);  
            while (rs.next()) {  
                String tableName = rs.getString("TABLE_NAME");  //表名 
                tableList.add(tableName);
            }  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }
        return tableList;
    }  
	
	 /** 
     * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 
     * @param name 
     * @param flag 
     * @return 
     */  
    private String getFormatString(String name, boolean flag) {  
        name = name.toLowerCase();  
        String[] nameTemp = name.split("_");  
        StringBuffer buffer = new StringBuffer();  
        for(String str : nameTemp) {  
            String head = str.substring(0, 1).toUpperCase();  
            String tail = str.substring(1);  
            buffer.append(head+tail);  
        }  
        StringBuffer result = null;  
        if(!flag) {  
            result = new StringBuffer();  
            String head = buffer.substring(0, 1).toLowerCase();  
            String tail = buffer.substring(1);  
            result.append(head+tail);  
            return result.toString();  
        }  
        return buffer.toString();  
    }  
	/** 
     * 把String内容写到文件 
     * @param fileName 
     * @param content 
     */  
    private void outputToFile(String fileName, String content) {  
        OutputStream os = null;  
        try {  
            os = new FileOutputStream(path+fileName);  
        } catch (FileNotFoundException e1) {  
            e1.printStackTrace();  
        }  
        byte[] b = content.getBytes();  
        try {  
            os.write(b);  
            os.flush();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                os.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    
    private void getServiceImpl() {
    	List<String> tableList = getAllTableList();
    	for(String tableName : tableList) {
    		String table = getFormatString(tableName, true);
    		String mybatis = table + "MybatisDao";
    		String dto = table;
    		String service = table + "Service";
    		String className = service + "Impl";
    		StringBuffer sb = new StringBuffer();
    		sb.append("package " + packageName + "\n\n");
    		sb.append("import " + packageNameDto + "." + dto + ";\n");
    		sb.append("import " + packageNameMybatis + "." + mybatis + ";\n");
    		sb.append("import " + packageNameService + "." + service + ";\n");
    		sb.append("import org.apache.log4j.Logger;\n");
    		sb.append("import org.springframework.beans.factory.annotation.Autowired;\n");
    		sb.append("import org.springframework.stereotype.Service;\n");
    		sb.append("import java.util.List;\n");
    		sb.append("@Service(\""+service.substring(0,1).toLowerCase()+service.substring(1)+"\")\n");
    		sb.append("public class " + className + " implements "+ service +" {\n\n");
    		
    		sb.append("\tprivate Logger log = Logger.getLogger("+className+".class);\n");
    		String instance = mybatis.substring(0,1).toLowerCase() + mybatis.substring(1);
    		sb.append("\t@Autowired\n");
    		sb.append("\tprivate "+mybatis+" " + instance +";\n");
    		
    		sb.append("\t@Override\n");
    		sb.append("\tpublic long addEntity(" + table + " dto) throws Exception {\n");
    		sb.append("\t\ttry {\n");
    		sb.append("\t\t\tlog.info(\"addEntity\");\n");
    		sb.append("\t\t\t"+instance+".addEntity(dto);\n");
    		sb.append("\t\t\treturn 0;\n");
    		sb.append("\t\t} catch(Exception e) {\n");
    		sb.append("\t\t\tlog.info(\"addEntity异常\");\n");
    		sb.append("\t\t\te.printStackTrace();\n");
    		sb.append("\t\t\tthrow e;\n");
    		sb.append("\t\t}\n");
    		sb.append("\t}\n");
    		
    		sb.append("\t@Override\n");
    		sb.append("\tpublic boolean deleteEntity(long id) throws Exception {\n");
    		sb.append("\t\ttry {\n");
    		sb.append("\t\t\tlog.info(\"deleteEntity\");\n");
    		sb.append("\t\t\t"+instance+".deleteEntity(id);\n");
    		sb.append("\t\t\treturn false;\n");
    		sb.append("\t\t} catch(Exception e) {\n");
    		sb.append("\t\t\tlog.info(\"deleteEntity异常\");\n");
    		sb.append("\t\t\te.printStackTrace();\n");
    		sb.append("\t\t\tthrow e;\n");
    		sb.append("\t\t}\n");
    		sb.append("\t}\n");
    		
    		sb.append("\t@Override\n");
    		sb.append("\tpublic long updateEntity(" + table + " dto) throws Exception {\n");
    		sb.append("\t\ttry {\n");
    		sb.append("\t\t\tlog.info(\"updateEntity\");\n");
    		sb.append("\t\t\t"+instance+".updateEntity(dto);\n");
    		sb.append("\t\t\treturn 0;\n");
    		sb.append("\t\t} catch(Exception e) {\n");
    		sb.append("\t\t\tlog.info(\"updateEntity异常\");\n");
    		sb.append("\t\t\te.printStackTrace();\n");
    		sb.append("\t\t\tthrow e;\n");
    		sb.append("\t\t}\n");
    		sb.append("\t}\n");
    		
    		sb.append("\t@Override\n");
    		sb.append("\tpublic "+table+" findEntity(" + table + " dto) throws Exception {\n");
    		sb.append("\t\ttry {\n");
    		sb.append("\t\t\tlog.info(\"findEntity\");\n");
    		sb.append("\t\t\treturn "+instance+".findEntity(dto);\n");
    		sb.append("\t\t} catch(Exception e) {\n");
    		sb.append("\t\t\tlog.info(\"findEntity异常\");\n");
    		sb.append("\t\t\te.printStackTrace();\n");
    		sb.append("\t\t\tthrow e;\n");
    		sb.append("\t\t}\n");
    		sb.append("\t}\n");
    		
    		sb.append("\t@Override\n");
    		sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto) throws Exception {\n");
    		sb.append("\t\ttry {\n");
    		sb.append("\t\t\tlog.info(\"findEntityList\");\n");
    		sb.append("\t\t\treturn "+instance+".findEntityList(dto);\n");
    		sb.append("\t\t} catch(Exception e) {\n");
    		sb.append("\t\t\tlog.info(\"findEntityList异常\");\n");
    		sb.append("\t\t\te.printStackTrace();\n");
    		sb.append("\t\t\tthrow e;\n");
    		sb.append("\t\t}\n");
    		sb.append("\t}\n");
    		
    		sb.append("}\n");
//    		System.out.println(sb.toString());
    		outputToFile(className+".java", sb.toString());
    	}
    }
    
	public static void main(String[] agrs) {
		GenerateServiceImpl aa = new GenerateServiceImpl();
		aa.getServiceImpl();
	}

}

生成mybatis的实现xml文件

package com.csair.test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GenerateMybatisXml {

	private String url = "jdbc:mysql://localhost:3306/jdz";
	private String username = "root";
	private String password = "root";
	private String driverClass = "com.mysql.jdbc.Driver";
	private DatabaseMetaData dbMetaData = null;
	private String packageNameMybatisDao = "com.csair.test.mybatisRepository";
//	private String path = "C:\\Users\\ppt\\Desktop\\test\\";
	private String path = "D:\\ppt\\workspace\\shop\\shopserver\\src\\test\\java\\com\\csair\\test\\xml\\";
	
	/**
	 * @Description: 获取表对应的所有列
	 * @author: ppt
	 * @date: 2015-3-16 上午10:13:17
	 * @param tableName
	 * @return: void
	 */
	public void getTableColumns(String tableName) {
		try {
			ResultSet resultSetColumn = dbMetaData.getColumns(null, null,
					tableName, null);
			String className = getFormatString(tableName, true);//表名
			String fileName = className + "Mapper";//文件名
			String thisFileName = className + "MybatisDao";//接口地址
			StringBuffer header = new StringBuffer(
					"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
			header.append("<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n");
			header.append("<mapper namespace=\"");
			header.append(packageNameMybatisDao+"."+thisFileName);
			header.append("\">\n\n");
			StringBuffer footer = new StringBuffer("\n</mapper>");
			StringBuffer add = new StringBuffer();
			//增加数据
			add.append("\t<insert id=\"addEntity\" parameterType=\""+className+"\">\n");
			String insert = "\t\tinsert into " + tableName + "(";
			String column = "";
			String values = "";
			//删除数据
			StringBuffer delete = new StringBuffer();
			delete.append("\t<update id=\"deleteEntity\" parameterType=\"long\">\n");
			delete.append("\t\tupdate " + tableName + " set status = -1 where id = #{id}\n");
			delete.append("\t</update>\n\n");
			//更新数据
			StringBuffer update = new StringBuffer();
			String updateConent = "";
			update.append("\t<update id=\"updateEntity\" parameterType=\""+className+"\">\n");
			update.append("\t\tupdate " + tableName + " set ");
			//查找数据
			StringBuffer select = new StringBuffer();
			select.append("\t<select id=\"findEntity\" parameterType=\""+className+"\" resultType=\""+className+"\">\n");
			String selectContent = "\t\tselect\n";
			//查找数据list
			StringBuffer selectList = new StringBuffer();
			selectList.append("\t<select id=\"findEntityList\" parameterType=\""+className+"\" resultType=\""+className+"\">\n");
			while (resultSetColumn.next()) {
				String columnName = resultSetColumn.getString("COLUMN_NAME");
				String oldColumnName = columnName;
				columnName = this.getFormatString(columnName, false);
				//增加数据
				if("ID".equals(columnName.toUpperCase())) {
					continue;
				}
				column += columnName +",";
				values += "#{" + columnName + "},";
				//删除数据
				
				//更新数据
				updateConent += columnName + "=#{" + columnName +"},";
				//查找数据
				selectContent += "\t\t"+oldColumnName + " AS " + columnName + ",\n";
			}
			selectContent = selectContent.substring(0, selectContent.length()-2);
			selectContent += "\n\t\tfrom " + tableName + "\n";
			select.append(selectContent);
			select.append("\t</select>\n\n");
			selectList.append(selectContent);
			selectList.append("\t</select>\n\n");
			updateConent = updateConent.substring(0,updateConent.length()-1);
			update.append(updateConent);
			update.append(" where id = #{id}\n");
			update.append("\t</update>\n\n");
			column = column.substring(0, column.length()-1);
			values = values.substring(0,values.length()-1);
			String statement = insert + column + ") values(" + values + ")\n";
			add.append(statement);
			add.append("\t</insert>\n\n");
			header.append(add);
			header.append(delete);
			header.append(update);
			header.append(select);
			header.append(selectList);
			header.append(footer);
//			System.out.println(header.toString());
			 this.outputToFile(fileName+".xml", header.toString()); 
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public GenerateMybatisXml() {
		try {
			Class.forName(driverClass);
			Connection conn = DriverManager.getConnection(url, username, password);
			dbMetaData = conn.getMetaData();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	  
	/**
	 * @Description: 获取所以的表
	 * @author: ppt
	 * @date: 2015-3-16 上午10:12:57
	 * @return: void
	 */
	public List<String> getAllTableList() {  
		List<String> tableList = new ArrayList<String>();
        try {  
            String[] types = { "TABLE" };  
            ResultSet rs = dbMetaData.getTables(null, null, "%", types);  
            while (rs.next()) {  
                String tableName = rs.getString("TABLE_NAME");  //表名 
                tableList.add(tableName);
            }  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }
        return tableList;
    }  
	
	 /** 
     * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写 
     * @param name 
     * @param flag 
     * @return 
     */  
    private String getFormatString(String name, boolean flag) {  
        name = name.toLowerCase();  
        String[] nameTemp = name.split("_");  
        StringBuffer buffer = new StringBuffer();  
        for(String str : nameTemp) {  
            String head = str.substring(0, 1).toUpperCase();  
            String tail = str.substring(1);  
            buffer.append(head+tail);  
        }  
        StringBuffer result = null;  
        if(!flag) {  
            result = new StringBuffer();  
            String head = buffer.substring(0, 1).toLowerCase();  
            String tail = buffer.substring(1);  
            result.append(head+tail);  
            return result.toString();  
        }  
        return buffer.toString();  
    }  
	/** 
     * 把String内容写到文件 
     * @param fileName 
     * @param content 
     */  
    private void outputToFile(String fileName, String content) {  
        OutputStream os = null;  
        try {  
            os = new FileOutputStream(path+fileName);  
        } catch (FileNotFoundException e1) {  
            e1.printStackTrace();  
        }  
        byte[] b = content.getBytes();  
        try {  
            os.write(b);  
            os.flush();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                os.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    
    
	public static void main(String[] agrs) {
		GenerateMybatisXml aa = new GenerateMybatisXml();
		List<String> tableList = aa.getAllTableList();
		for(String tableName : tableList) {
			aa.getTableColumns(tableName);
		}
//		aa.getTableColumns("loan_info");
	}
	
	
	

}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值