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

来源:互联网 发布:家世比 java 编辑:程序博客网 时间:2024/05/01 13:05



 

[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. public class GenerateEntity {  
  16.   
  17.     private String url = "jdbc:mysql://localhost:3306/database";  
  18.     private String username = "root";  
  19.     private String password = "root";  
  20.     private String driverClass = "com.mysql.jdbc.Driver";  
  21.     private DatabaseMetaData dbMetaData = null;  
  22.     private String packageName = "com.csair.test.dto;";  
  23.     private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  24.       
  25.     /** 
  26.      * @Description: 获取表对应的所有列 
  27.      * @author: ppt 
  28.      * @date: 2015-3-16 上午10:13:17 
  29.      * @param tableName 
  30.      * @return: void 
  31.      */  
  32.     public void getTableColumns(String tableName) {  
  33.         try {  
  34.             String ACCESS_DOMAIN = "private";  
  35.             ResultSet resultSet = dbMetaData.getColumns(nullnull, tableName, "%");  
  36.             while(resultSet.next()) {    
  37.                 ResultSet resultSetColumn = dbMetaData.getColumns(nullnull, tableName, null);    
  38.                 String className = getFormatString(tableName,true);  
  39.                 StringBuffer header = new StringBuffer("package " + packageName + "\n\n");  
  40.                 StringBuffer footer = new StringBuffer();  
  41.                 StringBuffer contentBuffer = new StringBuffer();  
  42.                 contentBuffer.append("public class " + className + "{\n");    
  43.                 while(resultSetColumn.next()) {    
  44.                     contentBuffer.append("\t"+ACCESS_DOMAIN + " ");    
  45.                     String columnType = resultSetColumn.getString("TYPE_NAME");    
  46.                     String COLUMN_TYPE = getColumnType(columnType);  
  47.                     if("Date".equals(COLUMN_TYPE)) {  
  48.                         header.append("import java.util.Date;\n");  
  49.                     }  
  50.                     contentBuffer.append(COLUMN_TYPE + " ");    
  51.                     String columnName = resultSetColumn.getString("COLUMN_NAME");   
  52.                     String remark = resultSetColumn.getString("REMARKS");  
  53.                     columnName = this.getFormatString(columnName, false);  
  54.                     footer.append(getSetGenerater(columnName, COLUMN_TYPE));  
  55.                     contentBuffer.append(columnName+";\t//"+remark+"\n");    
  56.                 }   
  57.                 contentBuffer.append("\n\n"+footer);  
  58.                 contentBuffer.append("}");    
  59.                 header.append("\n");  
  60.                 header.append(contentBuffer);  
  61.                 this.outputToFile(className+".java", header.toString());    
  62.             }    
  63.         } catch (SQLException e) {  
  64.             e.printStackTrace();  
  65.         }  
  66.     }  
  67.       
  68.     public GenerateEntity() {  
  69.         try {  
  70.             Class.forName(driverClass);  
  71.             Connection conn = DriverManager.getConnection(url, username, password);  
  72.             dbMetaData = conn.getMetaData();  
  73.         } catch(Exception e) {  
  74.             e.printStackTrace();  
  75.         }  
  76.     }  
  77.         
  78.     /** 
  79.      * @Description: 获取所以的表 
  80.      * @author: ppt 
  81.      * @date: 2015-3-16 上午10:12:57 
  82.      * @return: void 
  83.      */  
  84.     public List<String> getAllTableList() {    
  85.         List<String> tableList = new ArrayList<String>();  
  86.         try {    
  87.             String[] types = { "TABLE" };    
  88.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  89.             while (rs.next()) {    
  90.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  91.                 tableList.add(tableName);  
  92.             }    
  93.         } catch (SQLException e) {    
  94.             e.printStackTrace();    
  95.         }  
  96.         return tableList;  
  97.     }    
  98.       
  99.      /**  
  100.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  101.      * @param name  
  102.      * @param flag  
  103.      * @return  
  104.      */    
  105.     private String getFormatString(String name, boolean flag) {    
  106.         name = name.toLowerCase();    
  107.         String[] nameTemp = name.split("_");    
  108.         StringBuffer buffer = new StringBuffer();    
  109.         for(String str : nameTemp) {    
  110.             String head = str.substring(01).toUpperCase();    
  111.             String tail = str.substring(1);    
  112.             buffer.append(head+tail);    
  113.         }    
  114.         StringBuffer result = null;    
  115.         if(!flag) {    
  116.             result = new StringBuffer();    
  117.             String head = buffer.substring(01).toLowerCase();    
  118.             String tail = buffer.substring(1);    
  119.             result.append(head+tail);    
  120.             return result.toString();    
  121.         }    
  122.         return buffer.toString();    
  123.     }    
  124.     /**  
  125.      * 把String内容写到文件  
  126.      * @param fileName  
  127.      * @param content  
  128.      */    
  129.     private void outputToFile(String fileName, String content) {    
  130.         OutputStream os = null;    
  131.         try {    
  132.             os = new FileOutputStream(path+fileName);    
  133.         } catch (FileNotFoundException e1) {    
  134.             e1.printStackTrace();    
  135.         }    
  136.         byte[] b = content.getBytes();    
  137.         try {    
  138.             os.write(b);    
  139.             os.flush();    
  140.         } catch (IOException e) {    
  141.             e.printStackTrace();    
  142.         } finally {    
  143.             try {    
  144.                 os.close();    
  145.             } catch (IOException e) {    
  146.                 e.printStackTrace();    
  147.             }    
  148.         }    
  149.     }    
  150.     /**  
  151.      * 数据库类型转为java类型  
  152.      * @param column  
  153.      * @return  
  154.      */    
  155.     private String getColumnType(String column) {    
  156.         String COLUMN_TYPE = null;  
  157.         if("VARCHAR".equals(column)) {    
  158.             COLUMN_TYPE = "String";    
  159.         } else if("BIGINT".equals(column)) {    
  160.             COLUMN_TYPE = "Long";    
  161.         } else if("DATETIME".equals(column)) {    
  162.             COLUMN_TYPE = "Date";    
  163.         } else if("INT".equals(column) || "INT UNSIGNED".equals(column)) {    
  164.             COLUMN_TYPE = "Integer";    
  165.         } else if("BIGINT UNSIGNED".equals(column)) {    
  166.             COLUMN_TYPE = "Long";    
  167.         } else if("TINYINT UNSIGNED".equals(column)) {    
  168.             COLUMN_TYPE = "Short";    
  169.         } else if("DECIMAL".equals(column) || "FLOAT".equals(column) || "DOUBLE".equals(column)) {    
  170.             COLUMN_TYPE = "Double";    
  171.         } else if("TEXT".equals(column) || "MEDIUMTEXT".equals(column) || "LONGTEXT".equals(column)) {    
  172.             COLUMN_TYPE = "String";    
  173.         } else if("TIMESTAMP".equals(column) || "DATE".equals(column) || "DATETIME".equals(column)) {    
  174.             COLUMN_TYPE = "Date";    
  175.         } else if("TINYINT".equals(column)) {    
  176.             COLUMN_TYPE = "Short";    
  177.         } else if("DECIMAL UNSIGNED".equals(column)) {    
  178.             COLUMN_TYPE = "Double";    
  179.         } else if("SMALLINT".equals(column)) {    
  180.             COLUMN_TYPE = "Short";    
  181.         } else if("BIT".equals(column)) {    
  182.             COLUMN_TYPE = "Short";    
  183.         } else if("CHAR".equals(column)) {    
  184.             COLUMN_TYPE = "String";    
  185.         } else if("VARBINARY".equals(column)) {    
  186.             COLUMN_TYPE = "byte";    
  187.         } else if("BLOB".equals(column)) {    
  188.             COLUMN_TYPE = "byte";    
  189.         }  
  190.         return COLUMN_TYPE;    
  191.     }  
  192.       
  193.     private String getSetGenerater(String columnName, String columnType) {  
  194.         StringBuffer sb = new StringBuffer();  
  195.         sb.append("\tpublic " + columnType + " get" +columnName.substring(01).toUpperCase()+columnName.substring(1, columnName.length()) + "() {\n");  
  196.         sb.append("\t\treturn " + columnName + ";\n");  
  197.         sb.append("\t}\n\n");  
  198.         sb.append("\tpublic void set" + columnName.substring(01).toUpperCase()+columnName.substring(1, columnName.length()));  
  199.         sb.append("("+columnType +" " + columnName +") {\n");  
  200.         sb.append("\t\tthis." + columnName + " = " + columnName + ";\n");  
  201.         sb.append("\t}\n\n");  
  202.         return sb.toString();  
  203.     }  
  204.       
  205.     public static void main(String[] agrs) {  
  206.         GenerateEntity aa = new GenerateEntity();  
  207.         List<String> tableList = aa.getAllTableList();  
  208.         for(String tableName : tableList) {  
  209.             aa.getTableColumns(tableName);  
  210.         }  
  211. //      aa.getTableColumns("REPORT_REQ");  
  212.     }  
  213.       
  214.       
  215.       
  216.   
  217. }  
接口
[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. public class GenerateService {  
  16.   
  17.     private String url = "jdbc:mysql://localhost:3306/database";  
  18.     private String username = "root";  
  19.     private String password = "root";  
  20.     private String driverClass = "com.mysql.jdbc.Driver";  
  21.     private DatabaseMetaData dbMetaData = null;  
  22.     private String packageName = "com.csair.test.service;";  
  23.     private String packageNameDto = "com.csair.test.dto";  
  24.     private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  25.       
  26.     public GenerateService() {  
  27.         try {  
  28.             Class.forName(driverClass);  
  29.             Connection conn = DriverManager.getConnection(url, username, password);  
  30.             dbMetaData = conn.getMetaData();  
  31.         } catch(Exception e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35.         
  36.     /** 
  37.      * @Description: 获取所有的表 
  38.      * @author: ppt 
  39.      * @date: 2015-3-16 上午10:12:57 
  40.      * @return: void 
  41.      */  
  42.     public List<String> getAllTableList() {    
  43.         List<String> tableList = new ArrayList<String>();  
  44.         try {    
  45.             String[] types = { "TABLE" };    
  46.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  47.             while (rs.next()) {    
  48.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  49.                 tableList.add(tableName);  
  50.             }    
  51.         } catch (SQLException e) {    
  52.             e.printStackTrace();    
  53.         }  
  54.         return tableList;  
  55.     }    
  56.       
  57.      /**  
  58.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  59.      * @param name  
  60.      * @param flag  
  61.      * @return  
  62.      */    
  63.     private String getFormatString(String name, boolean flag) {    
  64.         name = name.toLowerCase();    
  65.         String[] nameTemp = name.split("_");    
  66.         StringBuffer buffer = new StringBuffer();    
  67.         for(String str : nameTemp) {    
  68.             String head = str.substring(01).toUpperCase();    
  69.             String tail = str.substring(1);    
  70.             buffer.append(head+tail);    
  71.         }    
  72.         StringBuffer result = null;    
  73.         if(!flag) {    
  74.             result = new StringBuffer();    
  75.             String head = buffer.substring(01).toLowerCase();    
  76.             String tail = buffer.substring(1);    
  77.             result.append(head+tail);    
  78.             return result.toString();    
  79.         }    
  80.         return buffer.toString();    
  81.     }    
  82.     /**  
  83.      * 把String内容写到文件  
  84.      * @param fileName  
  85.      * @param content  
  86.      */    
  87.     private void outputToFile(String fileName, String content) {    
  88.         OutputStream os = null;    
  89.         try {    
  90.             os = new FileOutputStream(path+fileName);    
  91.         } catch (FileNotFoundException e1) {    
  92.             e1.printStackTrace();    
  93.         }    
  94.         byte[] b = content.getBytes();    
  95.         try {    
  96.             os.write(b);    
  97.             os.flush();    
  98.         } catch (IOException e) {    
  99.             e.printStackTrace();    
  100.         } finally {    
  101.             try {    
  102.                 os.close();    
  103.             } catch (IOException e) {    
  104.                 e.printStackTrace();    
  105.             }    
  106.         }    
  107.     }    
  108.       
  109.     private void getService() {  
  110.         List<String> tableList = getAllTableList();  
  111.         for(String tableName : tableList) {  
  112.             String table = getFormatString(tableName, true);  
  113.             String className = table + "Service";  
  114.             StringBuffer sb = new StringBuffer();  
  115.             sb.append("package " + packageName + "\n\n");  
  116.             sb.append("import " + packageNameDto + "." + table + ";\n");  
  117.             sb.append("import java.util.List;\n");  
  118.             sb.append("import javax.ws.rs.POST;\n");  
  119.             sb.append("import javax.ws.rs.GET;\n");  
  120.             sb.append("import javax.ws.rs.PathParam;\n");  
  121.             sb.append("import javax.ws.rs.Path;\n");  
  122.             sb.append("import javax.ws.rs.Produces;\n");  
  123.             sb.append("import javax.ws.rs.core.MediaType;\n");  
  124.             sb.append("\n@Path(\"/" + className.substring(01).toLowerCase() + className.substring(1) + "\")\n");  
  125.             sb.append("public interface " + className + " {\n\n");  
  126.               
  127.             sb.append("\t//增加实体\n");  
  128.             sb.append("\t@POST\n");  
  129.             sb.append("\t@Path(\"addEntity\")\n");  
  130.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  131.             sb.append("\tpublic long addEntity(" + table + " dto) throws Exception;\n\n");  
  132.               
  133.             sb.append("\t//删除实体\n");  
  134.             sb.append("\t@GET\n");  
  135.             sb.append("\t@Path(\"deleteEntity/{id}\")\n");  
  136.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  137.             sb.append("\tpublic boolean deleteEntity(@PathParam(\"id\") long id) throws Exception;\n\n");  
  138.               
  139.             sb.append("\t//修改实体\n");  
  140.             sb.append("\t@POST\n");  
  141.             sb.append("\t@Path(\"updateEntity\")\n");  
  142.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  143.             sb.append("\tpublic long updateEntity(" + table + " dto) throws Exception;\n\n");  
  144.               
  145.             sb.append("\t//查询实体\n");  
  146.             sb.append("\t@POST\n");  
  147.             sb.append("\t@Path(\"findEntity\")\n");  
  148.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  149.             sb.append("\tpublic "+table+" findEntity(" + table + " dto) throws Exception;\n\n");  
  150.               
  151.             sb.append("\t//查询实体List\n");  
  152.             sb.append("\t@POST\n");  
  153.             sb.append("\t@Path(\"findEntityList\")\n");  
  154.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  155.             sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto) throws Exception;\n\n");  
  156.               
  157.             sb.append("}\n");  
  158.             outputToFile(className+".java", sb.toString());  
  159.         }  
  160.     }  
  161.       
  162.     public static void main(String[] agrs) {  
  163.         GenerateService aa = new GenerateService();  
  164.         aa.getService();  
  165.     }  
  166.   
  167. }  
mybatis接口

[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. public class GenerateMybatisRepository {  
  16.   
  17.     private String url = "jdbc:mysql://localhost:3306/database";  
  18.     private String username = "root";  
  19.     private String password = "root";  
  20.     private String driverClass = "com.mysql.jdbc.Driver";  
  21.     private DatabaseMetaData dbMetaData = null;  
  22.     private String packageName = "com.csair.test.mybatisRepository;";  
  23.     private String packageNameDto = "com.csair.test.dto";  
  24.     private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  25.       
  26.     public GenerateMybatisRepository() {  
  27.         try {  
  28.             Class.forName(driverClass);  
  29.             Connection conn = DriverManager.getConnection(url, username, password);  
  30.             dbMetaData = conn.getMetaData();  
  31.         } catch(Exception e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35.         
  36.     /** 
  37.      * @Description: 获取所有的表 
  38.      * @author: ppt 
  39.      * @date: 2015-3-16 上午10:12:57 
  40.      * @return: void 
  41.      */  
  42.     public List<String> getAllTableList() {    
  43.         List<String> tableList = new ArrayList<String>();  
  44.         try {    
  45.             String[] types = { "TABLE" };    
  46.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  47.             while (rs.next()) {    
  48.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  49.                 tableList.add(tableName);  
  50.             }    
  51.         } catch (SQLException e) {    
  52.             e.printStackTrace();    
  53.         }  
  54.         return tableList;  
  55.     }    
  56.       
  57.      /**  
  58.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  59.      * @param name  
  60.      * @param flag  
  61.      * @return  
  62.      */    
  63.     private String getFormatString(String name, boolean flag) {    
  64.         name = name.toLowerCase();    
  65.         String[] nameTemp = name.split("_");    
  66.         StringBuffer buffer = new StringBuffer();    
  67.         for(String str : nameTemp) {    
  68.             String head = str.substring(01).toUpperCase();    
  69.             String tail = str.substring(1);    
  70.             buffer.append(head+tail);    
  71.         }    
  72.         StringBuffer result = null;    
  73.         if(!flag) {    
  74.             result = new StringBuffer();    
  75.             String head = buffer.substring(01).toLowerCase();    
  76.             String tail = buffer.substring(1);    
  77.             result.append(head+tail);    
  78.             return result.toString();    
  79.         }    
  80.         return buffer.toString();    
  81.     }    
  82.     /**  
  83.      * 把String内容写到文件  
  84.      * @param fileName  
  85.      * @param content  
  86.      */    
  87.     private void outputToFile(String fileName, String content) {    
  88.         OutputStream os = null;    
  89.         try {    
  90.             os = new FileOutputStream(path+fileName);    
  91.         } catch (FileNotFoundException e1) {    
  92.             e1.printStackTrace();    
  93.         }    
  94.         byte[] b = content.getBytes();    
  95.         try {    
  96.             os.write(b);    
  97.             os.flush();    
  98.         } catch (IOException e) {    
  99.             e.printStackTrace();    
  100.         } finally {    
  101.             try {    
  102.                 os.close();    
  103.             } catch (IOException e) {    
  104.                 e.printStackTrace();    
  105.             }    
  106.         }    
  107.     }    
  108.       
  109.     private void getService() {  
  110.         List<String> tableList = getAllTableList();  
  111.         for(String tableName : tableList) {  
  112.             String table = getFormatString(tableName, true);  
  113.             String className = table + "MybatisDao";  
  114.             String dto = table;  
  115.             StringBuffer sb = new StringBuffer();  
  116.             sb.append("package " + packageName + "\n\n");  
  117.             sb.append("import " + packageNameDto + "." + dto + ";\n");  
  118.             sb.append("import java.util.List;\n");  
  119.             sb.append("\npublic interface " + className + " {\n\n");  
  120.               
  121.             sb.append("\tpublic long addEntity(" + table + " dto);\n\n");  
  122.               
  123.             sb.append("\tpublic boolean deleteEntity(long id);\n\n");  
  124.               
  125.             sb.append("\tpublic long updateEntity(" + table + " dto);\n\n");  
  126.               
  127.             sb.append("\tpublic "+table+" findEntity(" + table + " dto);\n\n");  
  128.               
  129.             sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto);\n\n");  
  130.               
  131.             sb.append("}\n");  
  132. //          System.out.println(sb.toString());  
  133.             outputToFile(className+".java", sb.toString());  
  134.         }  
  135.     }  
  136.       
  137.     public static void main(String[] agrs) {  
  138.         GenerateMybatisRepository aa = new GenerateMybatisRepository();  
  139.         aa.getService();  
  140.     }  
  141.   
  142.   
  143. }  

实现impl

[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. import org.springframework.beans.factory.annotation.Autowired;  
  16.   
  17. public class GenerateServiceImpl {  
  18.   
  19.     private String url = "jdbc:mysql://localhost:3306/database";  
  20.     private String username = "root";  
  21.     private String password = "root";  
  22.     private String driverClass = "com.mysql.jdbc.Driver";  
  23.     private DatabaseMetaData dbMetaData = null;  
  24.     private String packageName = "com.csair.test.service.impl;";  
  25.     private String packageNameService = "com.csair.test.service";  
  26.     private String packageNameDto = "com.csair.test.dto";  
  27.     private String packageNameMybatis = "com.csair.test.mybatisRepository";  
  28.     private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  29.       
  30.     public GenerateServiceImpl() {  
  31.         try {  
  32.             Class.forName(driverClass);  
  33.             Connection conn = DriverManager.getConnection(url, username, password);  
  34.             dbMetaData = conn.getMetaData();  
  35.         } catch(Exception e) {  
  36.             e.printStackTrace();  
  37.         }  
  38.     }  
  39.         
  40.     /** 
  41.      * @Description: 获取所有的表 
  42.      * @author: ppt 
  43.      * @date: 2015-3-16 上午10:12:57 
  44.      * @return: void 
  45.      */  
  46.     public List<String> getAllTableList() {    
  47.         List<String> tableList = new ArrayList<String>();  
  48.         try {    
  49.             String[] types = { "TABLE" };    
  50.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  51.             while (rs.next()) {    
  52.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  53.                 tableList.add(tableName);  
  54.             }    
  55.         } catch (SQLException e) {    
  56.             e.printStackTrace();    
  57.         }  
  58.         return tableList;  
  59.     }    
  60.       
  61.      /**  
  62.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  63.      * @param name  
  64.      * @param flag  
  65.      * @return  
  66.      */    
  67.     private String getFormatString(String name, boolean flag) {    
  68.         name = name.toLowerCase();    
  69.         String[] nameTemp = name.split("_");    
  70.         StringBuffer buffer = new StringBuffer();    
  71.         for(String str : nameTemp) {    
  72.             String head = str.substring(01).toUpperCase();    
  73.             String tail = str.substring(1);    
  74.             buffer.append(head+tail);    
  75.         }    
  76.         StringBuffer result = null;    
  77.         if(!flag) {    
  78.             result = new StringBuffer();    
  79.             String head = buffer.substring(01).toLowerCase();    
  80.             String tail = buffer.substring(1);    
  81.             result.append(head+tail);    
  82.             return result.toString();    
  83.         }    
  84.         return buffer.toString();    
  85.     }    
  86.     /**  
  87.      * 把String内容写到文件  
  88.      * @param fileName  
  89.      * @param content  
  90.      */    
  91.     private void outputToFile(String fileName, String content) {    
  92.         OutputStream os = null;    
  93.         try {    
  94.             os = new FileOutputStream(path+fileName);    
  95.         } catch (FileNotFoundException e1) {    
  96.             e1.printStackTrace();    
  97.         }    
  98.         byte[] b = content.getBytes();    
  99.         try {    
  100.             os.write(b);    
  101.             os.flush();    
  102.         } catch (IOException e) {    
  103.             e.printStackTrace();    
  104.         } finally {    
  105.             try {    
  106.                 os.close();    
  107.             } catch (IOException e) {    
  108.                 e.printStackTrace();    
  109.             }    
  110.         }    
  111.     }    
  112.       
  113.     private void getServiceImpl() {  
  114.         List<String> tableList = getAllTableList();  
  115.         for(String tableName : tableList) {  
  116.             String table = getFormatString(tableName, true);  
  117.             String mybatis = table + "MybatisDao";  
  118.             String dto = table;  
  119.             String service = table + "Service";  
  120.             String className = service + "Impl";  
  121.             StringBuffer sb = new StringBuffer();  
  122.             sb.append("package " + packageName + "\n\n");  
  123.             sb.append("import " + packageNameDto + "." + dto + ";\n");  
  124.             sb.append("import " + packageNameMybatis + "." + mybatis + ";\n");  
  125.             sb.append("import " + packageNameService + "." + service + ";\n");  
  126.             sb.append("import org.apache.log4j.Logger;\n");  
  127.             sb.append("import org.springframework.beans.factory.annotation.Autowired;\n");  
  128.             sb.append("import org.springframework.stereotype.Service;\n");  
  129.             sb.append("import java.util.List;\n");  
  130.             sb.append("@Service(\""+service.substring(0,1).toLowerCase()+service.substring(1)+"\")\n");  
  131.             sb.append("public class " + className + " implements "+ service +" {\n\n");  
  132.               
  133.             sb.append("\tprivate Logger log = Logger.getLogger("+className+".class);\n");  
  134.             String instance = mybatis.substring(0,1).toLowerCase() + mybatis.substring(1);  
  135.             sb.append("\t@Autowired\n");  
  136.             sb.append("\tprivate "+mybatis+" " + instance +";\n");  
  137.               
  138.             sb.append("\t@Override\n");  
  139.             sb.append("\tpublic long addEntity(" + table + " dto) throws Exception {\n");  
  140.             sb.append("\t\ttry {\n");  
  141.             sb.append("\t\t\tlog.info(\"addEntity\");\n");  
  142.             sb.append("\t\t\t"+instance+".addEntity(dto);\n");  
  143.             sb.append("\t\t\treturn 0;\n");  
  144.             sb.append("\t\t} catch(Exception e) {\n");  
  145.             sb.append("\t\t\tlog.info(\"addEntity异常\");\n");  
  146.             sb.append("\t\t\te.printStackTrace();\n");  
  147.             sb.append("\t\t\tthrow e;\n");  
  148.             sb.append("\t\t}\n");  
  149.             sb.append("\t}\n");  
  150.               
  151.             sb.append("\t@Override\n");  
  152.             sb.append("\tpublic boolean deleteEntity(long id) throws Exception {\n");  
  153.             sb.append("\t\ttry {\n");  
  154.             sb.append("\t\t\tlog.info(\"deleteEntity\");\n");  
  155.             sb.append("\t\t\t"+instance+".deleteEntity(id);\n");  
  156.             sb.append("\t\t\treturn false;\n");  
  157.             sb.append("\t\t} catch(Exception e) {\n");  
  158.             sb.append("\t\t\tlog.info(\"deleteEntity异常\");\n");  
  159.             sb.append("\t\t\te.printStackTrace();\n");  
  160.             sb.append("\t\t\tthrow e;\n");  
  161.             sb.append("\t\t}\n");  
  162.             sb.append("\t}\n");  
  163.               
  164.             sb.append("\t@Override\n");  
  165.             sb.append("\tpublic long updateEntity(" + table + " dto) throws Exception {\n");  
  166.             sb.append("\t\ttry {\n");  
  167.             sb.append("\t\t\tlog.info(\"updateEntity\");\n");  
  168.             sb.append("\t\t\t"+instance+".updateEntity(dto);\n");  
  169.             sb.append("\t\t\treturn 0;\n");  
  170.             sb.append("\t\t} catch(Exception e) {\n");  
  171.             sb.append("\t\t\tlog.info(\"updateEntity异常\");\n");  
  172.             sb.append("\t\t\te.printStackTrace();\n");  
  173.             sb.append("\t\t\tthrow e;\n");  
  174.             sb.append("\t\t}\n");  
  175.             sb.append("\t}\n");  
  176.               
  177.             sb.append("\t@Override\n");  
  178.             sb.append("\tpublic "+table+" findEntity(" + table + " dto) throws Exception {\n");  
  179.             sb.append("\t\ttry {\n");  
  180.             sb.append("\t\t\tlog.info(\"findEntity\");\n");  
  181.             sb.append("\t\t\treturn "+instance+".findEntity(dto);\n");  
  182.             sb.append("\t\t} catch(Exception e) {\n");  
  183.             sb.append("\t\t\tlog.info(\"findEntity异常\");\n");  
  184.             sb.append("\t\t\te.printStackTrace();\n");  
  185.             sb.append("\t\t\tthrow e;\n");  
  186.             sb.append("\t\t}\n");  
  187.             sb.append("\t}\n");  
  188.               
  189.             sb.append("\t@Override\n");  
  190.             sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto) throws Exception {\n");  
  191.             sb.append("\t\ttry {\n");  
  192.             sb.append("\t\t\tlog.info(\"findEntityList\");\n");  
  193.             sb.append("\t\t\treturn "+instance+".findEntityList(dto);\n");  
  194.             sb.append("\t\t} catch(Exception e) {\n");  
  195.             sb.append("\t\t\tlog.info(\"findEntityList异常\");\n");  
  196.             sb.append("\t\t\te.printStackTrace();\n");  
  197.             sb.append("\t\t\tthrow e;\n");  
  198.             sb.append("\t\t}\n");  
  199.             sb.append("\t}\n");  
  200.               
  201.             sb.append("}\n");  
  202. //          System.out.println(sb.toString());  
  203.             outputToFile(className+".java", sb.toString());  
  204.         }  
  205.     }  
  206.       
  207.     public static void main(String[] agrs) {  
  208.         GenerateServiceImpl aa = new GenerateServiceImpl();  
  209.         aa.getServiceImpl();  
  210.     }  
  211.   
  212. }  

生成mybatis的实现xml文件

[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. public class GenerateMybatisXml {  
  16.   
  17.     private String url = "jdbc:mysql://localhost:3306/jdz";  
  18.     private String username = "root";  
  19.     private String password = "root";  
  20.     private String driverClass = "com.mysql.jdbc.Driver";  
  21.     private DatabaseMetaData dbMetaData = null;  
  22.     private String packageNameMybatisDao = "com.csair.test.mybatisRepository";  
  23. //  private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  24.     private String path = "D:\\ppt\\workspace\\shop\\shopserver\\src\\test\\java\\com\\csair\\test\\xml\\";  
  25.       
  26.     /** 
  27.      * @Description: 获取表对应的所有列 
  28.      * @author: ppt 
  29.      * @date: 2015-3-16 上午10:13:17 
  30.      * @param tableName 
  31.      * @return: void 
  32.      */  
  33.     public void getTableColumns(String tableName) {  
  34.         try {  
  35.             ResultSet resultSetColumn = dbMetaData.getColumns(nullnull,  
  36.                     tableName, null);  
  37.             String className = getFormatString(tableName, true);//表名  
  38.             String fileName = className + "Mapper";//文件名  
  39.             String thisFileName = className + "MybatisDao";//接口地址  
  40.             StringBuffer header = new StringBuffer(  
  41.                     "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");  
  42.             header.append("<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n");  
  43.             header.append("<mapper namespace=\"");  
  44.             header.append(packageNameMybatisDao+"."+thisFileName);  
  45.             header.append("\">\n\n");  
  46.             StringBuffer footer = new StringBuffer("\n</mapper>");  
  47.             StringBuffer add = new StringBuffer();  
  48.             //增加数据  
  49.             add.append("\t<insert id=\"addEntity\" parameterType=\""+className+"\">\n");  
  50.             String insert = "\t\tinsert into " + tableName + "(";  
  51.             String column = "";  
  52.             String values = "";  
  53.             //删除数据  
  54.             StringBuffer delete = new StringBuffer();  
  55.             delete.append("\t<update id=\"deleteEntity\" parameterType=\"long\">\n");  
  56.             delete.append("\t\tupdate " + tableName + " set status = -1 where id = #{id}\n");  
  57.             delete.append("\t</update>\n\n");  
  58.             //更新数据  
  59.             StringBuffer update = new StringBuffer();  
  60.             String updateConent = "";  
  61.             update.append("\t<update id=\"updateEntity\" parameterType=\""+className+"\">\n");  
  62.             update.append("\t\tupdate " + tableName + " set ");  
  63.             //查找数据  
  64.             StringBuffer select = new StringBuffer();  
  65.             select.append("\t<select id=\"findEntity\" parameterType=\""+className+"\" resultType=\""+className+"\">\n");  
  66.             String selectContent = "\t\tselect\n";  
  67.             //查找数据list  
  68.             StringBuffer selectList = new StringBuffer();  
  69.             selectList.append("\t<select id=\"findEntityList\" parameterType=\""+className+"\" resultType=\""+className+"\">\n");  
  70.             while (resultSetColumn.next()) {  
  71.                 String columnName = resultSetColumn.getString("COLUMN_NAME");  
  72.                 String oldColumnName = columnName;  
  73.                 columnName = this.getFormatString(columnName, false);  
  74.                 //增加数据  
  75.                 if("ID".equals(columnName.toUpperCase())) {  
  76.                     continue;  
  77.                 }  
  78.                 column += columnName +",";  
  79.                 values += "#{" + columnName + "},";  
  80.                 //删除数据  
  81.                   
  82.                 //更新数据  
  83.                 updateConent += columnName + "=#{" + columnName +"},";  
  84.                 //查找数据  
  85.                 selectContent += "\t\t"+oldColumnName + " AS " + columnName + ",\n";  
  86.             }  
  87.             selectContent = selectContent.substring(0, selectContent.length()-2);  
  88.             selectContent += "\n\t\tfrom " + tableName + "\n";  
  89.             select.append(selectContent);  
  90.             select.append("\t</select>\n\n");  
  91.             selectList.append(selectContent);  
  92.             selectList.append("\t</select>\n\n");  
  93.             updateConent = updateConent.substring(0,updateConent.length()-1);  
  94.             update.append(updateConent);  
  95.             update.append(" where id = #{id}\n");  
  96.             update.append("\t</update>\n\n");  
  97.             column = column.substring(0, column.length()-1);  
  98.             values = values.substring(0,values.length()-1);  
  99.             String statement = insert + column + ") values(" + values + ")\n";  
  100.             add.append(statement);  
  101.             add.append("\t</insert>\n\n");  
  102.             header.append(add);  
  103.             header.append(delete);  
  104.             header.append(update);  
  105.             header.append(select);  
  106.             header.append(selectList);  
  107.             header.append(footer);  
  108. //          System.out.println(header.toString());  
  109.              this.outputToFile(fileName+".xml", header.toString());   
  110.         } catch (SQLException e) {  
  111.             e.printStackTrace();  
  112.         }  
  113.     }  
  114.       
  115.     public GenerateMybatisXml() {  
  116.         try {  
  117.             Class.forName(driverClass);  
  118.             Connection conn = DriverManager.getConnection(url, username, password);  
  119.             dbMetaData = conn.getMetaData();  
  120.         } catch(Exception e) {  
  121.             e.printStackTrace();  
  122.         }  
  123.     }  
  124.         
  125.     /** 
  126.      * @Description: 获取所以的表 
  127.      * @author: ppt 
  128.      * @date: 2015-3-16 上午10:12:57 
  129.      * @return: void 
  130.      */  
  131.     public List<String> getAllTableList() {    
  132.         List<String> tableList = new ArrayList<String>();  
  133.         try {    
  134.             String[] types = { "TABLE" };    
  135.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  136.             while (rs.next()) {    
  137.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  138.                 tableList.add(tableName);  
  139.             }    
  140.         } catch (SQLException e) {    
  141.             e.printStackTrace();    
  142.         }  
  143.         return tableList;  
  144.     }    
  145.       
  146.      /**  
  147.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  148.      * @param name  
  149.      * @param flag  
  150.      * @return  
  151.      */    
  152.     private String getFormatString(String name, boolean flag) {    
  153.         name = name.toLowerCase();    
  154.         String[] nameTemp = name.split("_");    
  155.         StringBuffer buffer = new StringBuffer();    
  156.         for(String str : nameTemp) {    
  157.             String head = str.substring(01).toUpperCase();    
  158.             String tail = str.substring(1);    
  159.             buffer.append(head+tail);    
  160.         }    
  161.         StringBuffer result = null;    
  162.         if(!flag) {    
  163.             result = new StringBuffer();    
  164.             String head = buffer.substring(01).toLowerCase();    
  165.             String tail = buffer.substring(1);    
  166.             result.append(head+tail);    
  167.             return result.toString();    
  168.         }    
  169.         return buffer.toString();    
  170.     }    
  171.     /**  
  172.      * 把String内容写到文件  
  173.      * @param fileName  
  174.      * @param content  
  175.      */    
  176.     private void outputToFile(String fileName, String content) {    
  177.         OutputStream os = null;    
  178.         try {    
  179.             os = new FileOutputStream(path+fileName);    
  180.         } catch (FileNotFoundException e1) {    
  181.             e1.printStackTrace();    
  182.         }    
  183.         byte[] b = content.getBytes();    
  184.         try {    
  185.             os.write(b);    
  186.             os.flush();    
  187.         } catch (IOException e) {    
  188.             e.printStackTrace();    
  189.         } finally {    
  190.             try {    
  191.                 os.close();    
  192.             } catch (IOException e) {    
  193.                 e.printStackTrace();    
  194.             }    
  195.         }    
  196.     }    
  197.       
  198.       
  199.     public static void main(String[] agrs) {  
  200.         GenerateMybatisXml aa = new GenerateMybatisXml();  
  201.         List<String> tableList = aa.getAllTableList();  
  202.         for(String tableName : tableList) {  
  203.             aa.getTableColumns(tableName);  
  204.         }  
  205. //      aa.getTableColumns("loan_info");  
  206.     }  
  207.       
  208.       
  209.       
  210.   
  211. }  


 

[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. public class GenerateEntity {  
  16.   
  17.     private String url = "jdbc:mysql://localhost:3306/database";  
  18.     private String username = "root";  
  19.     private String password = "root";  
  20.     private String driverClass = "com.mysql.jdbc.Driver";  
  21.     private DatabaseMetaData dbMetaData = null;  
  22.     private String packageName = "com.csair.test.dto;";  
  23.     private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  24.       
  25.     /** 
  26.      * @Description: 获取表对应的所有列 
  27.      * @author: ppt 
  28.      * @date: 2015-3-16 上午10:13:17 
  29.      * @param tableName 
  30.      * @return: void 
  31.      */  
  32.     public void getTableColumns(String tableName) {  
  33.         try {  
  34.             String ACCESS_DOMAIN = "private";  
  35.             ResultSet resultSet = dbMetaData.getColumns(nullnull, tableName, "%");  
  36.             while(resultSet.next()) {    
  37.                 ResultSet resultSetColumn = dbMetaData.getColumns(nullnull, tableName, null);    
  38.                 String className = getFormatString(tableName,true);  
  39.                 StringBuffer header = new StringBuffer("package " + packageName + "\n\n");  
  40.                 StringBuffer footer = new StringBuffer();  
  41.                 StringBuffer contentBuffer = new StringBuffer();  
  42.                 contentBuffer.append("public class " + className + "{\n");    
  43.                 while(resultSetColumn.next()) {    
  44.                     contentBuffer.append("\t"+ACCESS_DOMAIN + " ");    
  45.                     String columnType = resultSetColumn.getString("TYPE_NAME");    
  46.                     String COLUMN_TYPE = getColumnType(columnType);  
  47.                     if("Date".equals(COLUMN_TYPE)) {  
  48.                         header.append("import java.util.Date;\n");  
  49.                     }  
  50.                     contentBuffer.append(COLUMN_TYPE + " ");    
  51.                     String columnName = resultSetColumn.getString("COLUMN_NAME");   
  52.                     String remark = resultSetColumn.getString("REMARKS");  
  53.                     columnName = this.getFormatString(columnName, false);  
  54.                     footer.append(getSetGenerater(columnName, COLUMN_TYPE));  
  55.                     contentBuffer.append(columnName+";\t//"+remark+"\n");    
  56.                 }   
  57.                 contentBuffer.append("\n\n"+footer);  
  58.                 contentBuffer.append("}");    
  59.                 header.append("\n");  
  60.                 header.append(contentBuffer);  
  61.                 this.outputToFile(className+".java", header.toString());    
  62.             }    
  63.         } catch (SQLException e) {  
  64.             e.printStackTrace();  
  65.         }  
  66.     }  
  67.       
  68.     public GenerateEntity() {  
  69.         try {  
  70.             Class.forName(driverClass);  
  71.             Connection conn = DriverManager.getConnection(url, username, password);  
  72.             dbMetaData = conn.getMetaData();  
  73.         } catch(Exception e) {  
  74.             e.printStackTrace();  
  75.         }  
  76.     }  
  77.         
  78.     /** 
  79.      * @Description: 获取所以的表 
  80.      * @author: ppt 
  81.      * @date: 2015-3-16 上午10:12:57 
  82.      * @return: void 
  83.      */  
  84.     public List<String> getAllTableList() {    
  85.         List<String> tableList = new ArrayList<String>();  
  86.         try {    
  87.             String[] types = { "TABLE" };    
  88.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  89.             while (rs.next()) {    
  90.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  91.                 tableList.add(tableName);  
  92.             }    
  93.         } catch (SQLException e) {    
  94.             e.printStackTrace();    
  95.         }  
  96.         return tableList;  
  97.     }    
  98.       
  99.      /**  
  100.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  101.      * @param name  
  102.      * @param flag  
  103.      * @return  
  104.      */    
  105.     private String getFormatString(String name, boolean flag) {    
  106.         name = name.toLowerCase();    
  107.         String[] nameTemp = name.split("_");    
  108.         StringBuffer buffer = new StringBuffer();    
  109.         for(String str : nameTemp) {    
  110.             String head = str.substring(01).toUpperCase();    
  111.             String tail = str.substring(1);    
  112.             buffer.append(head+tail);    
  113.         }    
  114.         StringBuffer result = null;    
  115.         if(!flag) {    
  116.             result = new StringBuffer();    
  117.             String head = buffer.substring(01).toLowerCase();    
  118.             String tail = buffer.substring(1);    
  119.             result.append(head+tail);    
  120.             return result.toString();    
  121.         }    
  122.         return buffer.toString();    
  123.     }    
  124.     /**  
  125.      * 把String内容写到文件  
  126.      * @param fileName  
  127.      * @param content  
  128.      */    
  129.     private void outputToFile(String fileName, String content) {    
  130.         OutputStream os = null;    
  131.         try {    
  132.             os = new FileOutputStream(path+fileName);    
  133.         } catch (FileNotFoundException e1) {    
  134.             e1.printStackTrace();    
  135.         }    
  136.         byte[] b = content.getBytes();    
  137.         try {    
  138.             os.write(b);    
  139.             os.flush();    
  140.         } catch (IOException e) {    
  141.             e.printStackTrace();    
  142.         } finally {    
  143.             try {    
  144.                 os.close();    
  145.             } catch (IOException e) {    
  146.                 e.printStackTrace();    
  147.             }    
  148.         }    
  149.     }    
  150.     /**  
  151.      * 数据库类型转为java类型  
  152.      * @param column  
  153.      * @return  
  154.      */    
  155.     private String getColumnType(String column) {    
  156.         String COLUMN_TYPE = null;  
  157.         if("VARCHAR".equals(column)) {    
  158.             COLUMN_TYPE = "String";    
  159.         } else if("BIGINT".equals(column)) {    
  160.             COLUMN_TYPE = "Long";    
  161.         } else if("DATETIME".equals(column)) {    
  162.             COLUMN_TYPE = "Date";    
  163.         } else if("INT".equals(column) || "INT UNSIGNED".equals(column)) {    
  164.             COLUMN_TYPE = "Integer";    
  165.         } else if("BIGINT UNSIGNED".equals(column)) {    
  166.             COLUMN_TYPE = "Long";    
  167.         } else if("TINYINT UNSIGNED".equals(column)) {    
  168.             COLUMN_TYPE = "Short";    
  169.         } else if("DECIMAL".equals(column) || "FLOAT".equals(column) || "DOUBLE".equals(column)) {    
  170.             COLUMN_TYPE = "Double";    
  171.         } else if("TEXT".equals(column) || "MEDIUMTEXT".equals(column) || "LONGTEXT".equals(column)) {    
  172.             COLUMN_TYPE = "String";    
  173.         } else if("TIMESTAMP".equals(column) || "DATE".equals(column) || "DATETIME".equals(column)) {    
  174.             COLUMN_TYPE = "Date";    
  175.         } else if("TINYINT".equals(column)) {    
  176.             COLUMN_TYPE = "Short";    
  177.         } else if("DECIMAL UNSIGNED".equals(column)) {    
  178.             COLUMN_TYPE = "Double";    
  179.         } else if("SMALLINT".equals(column)) {    
  180.             COLUMN_TYPE = "Short";    
  181.         } else if("BIT".equals(column)) {    
  182.             COLUMN_TYPE = "Short";    
  183.         } else if("CHAR".equals(column)) {    
  184.             COLUMN_TYPE = "String";    
  185.         } else if("VARBINARY".equals(column)) {    
  186.             COLUMN_TYPE = "byte";    
  187.         } else if("BLOB".equals(column)) {    
  188.             COLUMN_TYPE = "byte";    
  189.         }  
  190.         return COLUMN_TYPE;    
  191.     }  
  192.       
  193.     private String getSetGenerater(String columnName, String columnType) {  
  194.         StringBuffer sb = new StringBuffer();  
  195.         sb.append("\tpublic " + columnType + " get" +columnName.substring(01).toUpperCase()+columnName.substring(1, columnName.length()) + "() {\n");  
  196.         sb.append("\t\treturn " + columnName + ";\n");  
  197.         sb.append("\t}\n\n");  
  198.         sb.append("\tpublic void set" + columnName.substring(01).toUpperCase()+columnName.substring(1, columnName.length()));  
  199.         sb.append("("+columnType +" " + columnName +") {\n");  
  200.         sb.append("\t\tthis." + columnName + " = " + columnName + ";\n");  
  201.         sb.append("\t}\n\n");  
  202.         return sb.toString();  
  203.     }  
  204.       
  205.     public static void main(String[] agrs) {  
  206.         GenerateEntity aa = new GenerateEntity();  
  207.         List<String> tableList = aa.getAllTableList();  
  208.         for(String tableName : tableList) {  
  209.             aa.getTableColumns(tableName);  
  210.         }  
  211. //      aa.getTableColumns("REPORT_REQ");  
  212.     }  
  213.       
  214.       
  215.       
  216.   
  217. }  
接口
[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. public class GenerateService {  
  16.   
  17.     private String url = "jdbc:mysql://localhost:3306/database";  
  18.     private String username = "root";  
  19.     private String password = "root";  
  20.     private String driverClass = "com.mysql.jdbc.Driver";  
  21.     private DatabaseMetaData dbMetaData = null;  
  22.     private String packageName = "com.csair.test.service;";  
  23.     private String packageNameDto = "com.csair.test.dto";  
  24.     private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  25.       
  26.     public GenerateService() {  
  27.         try {  
  28.             Class.forName(driverClass);  
  29.             Connection conn = DriverManager.getConnection(url, username, password);  
  30.             dbMetaData = conn.getMetaData();  
  31.         } catch(Exception e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35.         
  36.     /** 
  37.      * @Description: 获取所有的表 
  38.      * @author: ppt 
  39.      * @date: 2015-3-16 上午10:12:57 
  40.      * @return: void 
  41.      */  
  42.     public List<String> getAllTableList() {    
  43.         List<String> tableList = new ArrayList<String>();  
  44.         try {    
  45.             String[] types = { "TABLE" };    
  46.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  47.             while (rs.next()) {    
  48.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  49.                 tableList.add(tableName);  
  50.             }    
  51.         } catch (SQLException e) {    
  52.             e.printStackTrace();    
  53.         }  
  54.         return tableList;  
  55.     }    
  56.       
  57.      /**  
  58.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  59.      * @param name  
  60.      * @param flag  
  61.      * @return  
  62.      */    
  63.     private String getFormatString(String name, boolean flag) {    
  64.         name = name.toLowerCase();    
  65.         String[] nameTemp = name.split("_");    
  66.         StringBuffer buffer = new StringBuffer();    
  67.         for(String str : nameTemp) {    
  68.             String head = str.substring(01).toUpperCase();    
  69.             String tail = str.substring(1);    
  70.             buffer.append(head+tail);    
  71.         }    
  72.         StringBuffer result = null;    
  73.         if(!flag) {    
  74.             result = new StringBuffer();    
  75.             String head = buffer.substring(01).toLowerCase();    
  76.             String tail = buffer.substring(1);    
  77.             result.append(head+tail);    
  78.             return result.toString();    
  79.         }    
  80.         return buffer.toString();    
  81.     }    
  82.     /**  
  83.      * 把String内容写到文件  
  84.      * @param fileName  
  85.      * @param content  
  86.      */    
  87.     private void outputToFile(String fileName, String content) {    
  88.         OutputStream os = null;    
  89.         try {    
  90.             os = new FileOutputStream(path+fileName);    
  91.         } catch (FileNotFoundException e1) {    
  92.             e1.printStackTrace();    
  93.         }    
  94.         byte[] b = content.getBytes();    
  95.         try {    
  96.             os.write(b);    
  97.             os.flush();    
  98.         } catch (IOException e) {    
  99.             e.printStackTrace();    
  100.         } finally {    
  101.             try {    
  102.                 os.close();    
  103.             } catch (IOException e) {    
  104.                 e.printStackTrace();    
  105.             }    
  106.         }    
  107.     }    
  108.       
  109.     private void getService() {  
  110.         List<String> tableList = getAllTableList();  
  111.         for(String tableName : tableList) {  
  112.             String table = getFormatString(tableName, true);  
  113.             String className = table + "Service";  
  114.             StringBuffer sb = new StringBuffer();  
  115.             sb.append("package " + packageName + "\n\n");  
  116.             sb.append("import " + packageNameDto + "." + table + ";\n");  
  117.             sb.append("import java.util.List;\n");  
  118.             sb.append("import javax.ws.rs.POST;\n");  
  119.             sb.append("import javax.ws.rs.GET;\n");  
  120.             sb.append("import javax.ws.rs.PathParam;\n");  
  121.             sb.append("import javax.ws.rs.Path;\n");  
  122.             sb.append("import javax.ws.rs.Produces;\n");  
  123.             sb.append("import javax.ws.rs.core.MediaType;\n");  
  124.             sb.append("\n@Path(\"/" + className.substring(01).toLowerCase() + className.substring(1) + "\")\n");  
  125.             sb.append("public interface " + className + " {\n\n");  
  126.               
  127.             sb.append("\t//增加实体\n");  
  128.             sb.append("\t@POST\n");  
  129.             sb.append("\t@Path(\"addEntity\")\n");  
  130.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  131.             sb.append("\tpublic long addEntity(" + table + " dto) throws Exception;\n\n");  
  132.               
  133.             sb.append("\t//删除实体\n");  
  134.             sb.append("\t@GET\n");  
  135.             sb.append("\t@Path(\"deleteEntity/{id}\")\n");  
  136.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  137.             sb.append("\tpublic boolean deleteEntity(@PathParam(\"id\") long id) throws Exception;\n\n");  
  138.               
  139.             sb.append("\t//修改实体\n");  
  140.             sb.append("\t@POST\n");  
  141.             sb.append("\t@Path(\"updateEntity\")\n");  
  142.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  143.             sb.append("\tpublic long updateEntity(" + table + " dto) throws Exception;\n\n");  
  144.               
  145.             sb.append("\t//查询实体\n");  
  146.             sb.append("\t@POST\n");  
  147.             sb.append("\t@Path(\"findEntity\")\n");  
  148.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  149.             sb.append("\tpublic "+table+" findEntity(" + table + " dto) throws Exception;\n\n");  
  150.               
  151.             sb.append("\t//查询实体List\n");  
  152.             sb.append("\t@POST\n");  
  153.             sb.append("\t@Path(\"findEntityList\")\n");  
  154.             sb.append("\t@Produces(MediaType.APPLICATION_XML)\n");  
  155.             sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto) throws Exception;\n\n");  
  156.               
  157.             sb.append("}\n");  
  158.             outputToFile(className+".java", sb.toString());  
  159.         }  
  160.     }  
  161.       
  162.     public static void main(String[] agrs) {  
  163.         GenerateService aa = new GenerateService();  
  164.         aa.getService();  
  165.     }  
  166.   
  167. }  
mybatis接口

[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. public class GenerateMybatisRepository {  
  16.   
  17.     private String url = "jdbc:mysql://localhost:3306/database";  
  18.     private String username = "root";  
  19.     private String password = "root";  
  20.     private String driverClass = "com.mysql.jdbc.Driver";  
  21.     private DatabaseMetaData dbMetaData = null;  
  22.     private String packageName = "com.csair.test.mybatisRepository;";  
  23.     private String packageNameDto = "com.csair.test.dto";  
  24.     private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  25.       
  26.     public GenerateMybatisRepository() {  
  27.         try {  
  28.             Class.forName(driverClass);  
  29.             Connection conn = DriverManager.getConnection(url, username, password);  
  30.             dbMetaData = conn.getMetaData();  
  31.         } catch(Exception e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35.         
  36.     /** 
  37.      * @Description: 获取所有的表 
  38.      * @author: ppt 
  39.      * @date: 2015-3-16 上午10:12:57 
  40.      * @return: void 
  41.      */  
  42.     public List<String> getAllTableList() {    
  43.         List<String> tableList = new ArrayList<String>();  
  44.         try {    
  45.             String[] types = { "TABLE" };    
  46.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  47.             while (rs.next()) {    
  48.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  49.                 tableList.add(tableName);  
  50.             }    
  51.         } catch (SQLException e) {    
  52.             e.printStackTrace();    
  53.         }  
  54.         return tableList;  
  55.     }    
  56.       
  57.      /**  
  58.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  59.      * @param name  
  60.      * @param flag  
  61.      * @return  
  62.      */    
  63.     private String getFormatString(String name, boolean flag) {    
  64.         name = name.toLowerCase();    
  65.         String[] nameTemp = name.split("_");    
  66.         StringBuffer buffer = new StringBuffer();    
  67.         for(String str : nameTemp) {    
  68.             String head = str.substring(01).toUpperCase();    
  69.             String tail = str.substring(1);    
  70.             buffer.append(head+tail);    
  71.         }    
  72.         StringBuffer result = null;    
  73.         if(!flag) {    
  74.             result = new StringBuffer();    
  75.             String head = buffer.substring(01).toLowerCase();    
  76.             String tail = buffer.substring(1);    
  77.             result.append(head+tail);    
  78.             return result.toString();    
  79.         }    
  80.         return buffer.toString();    
  81.     }    
  82.     /**  
  83.      * 把String内容写到文件  
  84.      * @param fileName  
  85.      * @param content  
  86.      */    
  87.     private void outputToFile(String fileName, String content) {    
  88.         OutputStream os = null;    
  89.         try {    
  90.             os = new FileOutputStream(path+fileName);    
  91.         } catch (FileNotFoundException e1) {    
  92.             e1.printStackTrace();    
  93.         }    
  94.         byte[] b = content.getBytes();    
  95.         try {    
  96.             os.write(b);    
  97.             os.flush();    
  98.         } catch (IOException e) {    
  99.             e.printStackTrace();    
  100.         } finally {    
  101.             try {    
  102.                 os.close();    
  103.             } catch (IOException e) {    
  104.                 e.printStackTrace();    
  105.             }    
  106.         }    
  107.     }    
  108.       
  109.     private void getService() {  
  110.         List<String> tableList = getAllTableList();  
  111.         for(String tableName : tableList) {  
  112.             String table = getFormatString(tableName, true);  
  113.             String className = table + "MybatisDao";  
  114.             String dto = table;  
  115.             StringBuffer sb = new StringBuffer();  
  116.             sb.append("package " + packageName + "\n\n");  
  117.             sb.append("import " + packageNameDto + "." + dto + ";\n");  
  118.             sb.append("import java.util.List;\n");  
  119.             sb.append("\npublic interface " + className + " {\n\n");  
  120.               
  121.             sb.append("\tpublic long addEntity(" + table + " dto);\n\n");  
  122.               
  123.             sb.append("\tpublic boolean deleteEntity(long id);\n\n");  
  124.               
  125.             sb.append("\tpublic long updateEntity(" + table + " dto);\n\n");  
  126.               
  127.             sb.append("\tpublic "+table+" findEntity(" + table + " dto);\n\n");  
  128.               
  129.             sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto);\n\n");  
  130.               
  131.             sb.append("}\n");  
  132. //          System.out.println(sb.toString());  
  133.             outputToFile(className+".java", sb.toString());  
  134.         }  
  135.     }  
  136.       
  137.     public static void main(String[] agrs) {  
  138.         GenerateMybatisRepository aa = new GenerateMybatisRepository();  
  139.         aa.getService();  
  140.     }  
  141.   
  142.   
  143. }  

实现impl

[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. import org.springframework.beans.factory.annotation.Autowired;  
  16.   
  17. public class GenerateServiceImpl {  
  18.   
  19.     private String url = "jdbc:mysql://localhost:3306/database";  
  20.     private String username = "root";  
  21.     private String password = "root";  
  22.     private String driverClass = "com.mysql.jdbc.Driver";  
  23.     private DatabaseMetaData dbMetaData = null;  
  24.     private String packageName = "com.csair.test.service.impl;";  
  25.     private String packageNameService = "com.csair.test.service";  
  26.     private String packageNameDto = "com.csair.test.dto";  
  27.     private String packageNameMybatis = "com.csair.test.mybatisRepository";  
  28.     private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  29.       
  30.     public GenerateServiceImpl() {  
  31.         try {  
  32.             Class.forName(driverClass);  
  33.             Connection conn = DriverManager.getConnection(url, username, password);  
  34.             dbMetaData = conn.getMetaData();  
  35.         } catch(Exception e) {  
  36.             e.printStackTrace();  
  37.         }  
  38.     }  
  39.         
  40.     /** 
  41.      * @Description: 获取所有的表 
  42.      * @author: ppt 
  43.      * @date: 2015-3-16 上午10:12:57 
  44.      * @return: void 
  45.      */  
  46.     public List<String> getAllTableList() {    
  47.         List<String> tableList = new ArrayList<String>();  
  48.         try {    
  49.             String[] types = { "TABLE" };    
  50.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  51.             while (rs.next()) {    
  52.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  53.                 tableList.add(tableName);  
  54.             }    
  55.         } catch (SQLException e) {    
  56.             e.printStackTrace();    
  57.         }  
  58.         return tableList;  
  59.     }    
  60.       
  61.      /**  
  62.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  63.      * @param name  
  64.      * @param flag  
  65.      * @return  
  66.      */    
  67.     private String getFormatString(String name, boolean flag) {    
  68.         name = name.toLowerCase();    
  69.         String[] nameTemp = name.split("_");    
  70.         StringBuffer buffer = new StringBuffer();    
  71.         for(String str : nameTemp) {    
  72.             String head = str.substring(01).toUpperCase();    
  73.             String tail = str.substring(1);    
  74.             buffer.append(head+tail);    
  75.         }    
  76.         StringBuffer result = null;    
  77.         if(!flag) {    
  78.             result = new StringBuffer();    
  79.             String head = buffer.substring(01).toLowerCase();    
  80.             String tail = buffer.substring(1);    
  81.             result.append(head+tail);    
  82.             return result.toString();    
  83.         }    
  84.         return buffer.toString();    
  85.     }    
  86.     /**  
  87.      * 把String内容写到文件  
  88.      * @param fileName  
  89.      * @param content  
  90.      */    
  91.     private void outputToFile(String fileName, String content) {    
  92.         OutputStream os = null;    
  93.         try {    
  94.             os = new FileOutputStream(path+fileName);    
  95.         } catch (FileNotFoundException e1) {    
  96.             e1.printStackTrace();    
  97.         }    
  98.         byte[] b = content.getBytes();    
  99.         try {    
  100.             os.write(b);    
  101.             os.flush();    
  102.         } catch (IOException e) {    
  103.             e.printStackTrace();    
  104.         } finally {    
  105.             try {    
  106.                 os.close();    
  107.             } catch (IOException e) {    
  108.                 e.printStackTrace();    
  109.             }    
  110.         }    
  111.     }    
  112.       
  113.     private void getServiceImpl() {  
  114.         List<String> tableList = getAllTableList();  
  115.         for(String tableName : tableList) {  
  116.             String table = getFormatString(tableName, true);  
  117.             String mybatis = table + "MybatisDao";  
  118.             String dto = table;  
  119.             String service = table + "Service";  
  120.             String className = service + "Impl";  
  121.             StringBuffer sb = new StringBuffer();  
  122.             sb.append("package " + packageName + "\n\n");  
  123.             sb.append("import " + packageNameDto + "." + dto + ";\n");  
  124.             sb.append("import " + packageNameMybatis + "." + mybatis + ";\n");  
  125.             sb.append("import " + packageNameService + "." + service + ";\n");  
  126.             sb.append("import org.apache.log4j.Logger;\n");  
  127.             sb.append("import org.springframework.beans.factory.annotation.Autowired;\n");  
  128.             sb.append("import org.springframework.stereotype.Service;\n");  
  129.             sb.append("import java.util.List;\n");  
  130.             sb.append("@Service(\""+service.substring(0,1).toLowerCase()+service.substring(1)+"\")\n");  
  131.             sb.append("public class " + className + " implements "+ service +" {\n\n");  
  132.               
  133.             sb.append("\tprivate Logger log = Logger.getLogger("+className+".class);\n");  
  134.             String instance = mybatis.substring(0,1).toLowerCase() + mybatis.substring(1);  
  135.             sb.append("\t@Autowired\n");  
  136.             sb.append("\tprivate "+mybatis+" " + instance +";\n");  
  137.               
  138.             sb.append("\t@Override\n");  
  139.             sb.append("\tpublic long addEntity(" + table + " dto) throws Exception {\n");  
  140.             sb.append("\t\ttry {\n");  
  141.             sb.append("\t\t\tlog.info(\"addEntity\");\n");  
  142.             sb.append("\t\t\t"+instance+".addEntity(dto);\n");  
  143.             sb.append("\t\t\treturn 0;\n");  
  144.             sb.append("\t\t} catch(Exception e) {\n");  
  145.             sb.append("\t\t\tlog.info(\"addEntity异常\");\n");  
  146.             sb.append("\t\t\te.printStackTrace();\n");  
  147.             sb.append("\t\t\tthrow e;\n");  
  148.             sb.append("\t\t}\n");  
  149.             sb.append("\t}\n");  
  150.               
  151.             sb.append("\t@Override\n");  
  152.             sb.append("\tpublic boolean deleteEntity(long id) throws Exception {\n");  
  153.             sb.append("\t\ttry {\n");  
  154.             sb.append("\t\t\tlog.info(\"deleteEntity\");\n");  
  155.             sb.append("\t\t\t"+instance+".deleteEntity(id);\n");  
  156.             sb.append("\t\t\treturn false;\n");  
  157.             sb.append("\t\t} catch(Exception e) {\n");  
  158.             sb.append("\t\t\tlog.info(\"deleteEntity异常\");\n");  
  159.             sb.append("\t\t\te.printStackTrace();\n");  
  160.             sb.append("\t\t\tthrow e;\n");  
  161.             sb.append("\t\t}\n");  
  162.             sb.append("\t}\n");  
  163.               
  164.             sb.append("\t@Override\n");  
  165.             sb.append("\tpublic long updateEntity(" + table + " dto) throws Exception {\n");  
  166.             sb.append("\t\ttry {\n");  
  167.             sb.append("\t\t\tlog.info(\"updateEntity\");\n");  
  168.             sb.append("\t\t\t"+instance+".updateEntity(dto);\n");  
  169.             sb.append("\t\t\treturn 0;\n");  
  170.             sb.append("\t\t} catch(Exception e) {\n");  
  171.             sb.append("\t\t\tlog.info(\"updateEntity异常\");\n");  
  172.             sb.append("\t\t\te.printStackTrace();\n");  
  173.             sb.append("\t\t\tthrow e;\n");  
  174.             sb.append("\t\t}\n");  
  175.             sb.append("\t}\n");  
  176.               
  177.             sb.append("\t@Override\n");  
  178.             sb.append("\tpublic "+table+" findEntity(" + table + " dto) throws Exception {\n");  
  179.             sb.append("\t\ttry {\n");  
  180.             sb.append("\t\t\tlog.info(\"findEntity\");\n");  
  181.             sb.append("\t\t\treturn "+instance+".findEntity(dto);\n");  
  182.             sb.append("\t\t} catch(Exception e) {\n");  
  183.             sb.append("\t\t\tlog.info(\"findEntity异常\");\n");  
  184.             sb.append("\t\t\te.printStackTrace();\n");  
  185.             sb.append("\t\t\tthrow e;\n");  
  186.             sb.append("\t\t}\n");  
  187.             sb.append("\t}\n");  
  188.               
  189.             sb.append("\t@Override\n");  
  190.             sb.append("\tpublic List<"+table+"> findEntityList(" + table + " dto) throws Exception {\n");  
  191.             sb.append("\t\ttry {\n");  
  192.             sb.append("\t\t\tlog.info(\"findEntityList\");\n");  
  193.             sb.append("\t\t\treturn "+instance+".findEntityList(dto);\n");  
  194.             sb.append("\t\t} catch(Exception e) {\n");  
  195.             sb.append("\t\t\tlog.info(\"findEntityList异常\");\n");  
  196.             sb.append("\t\t\te.printStackTrace();\n");  
  197.             sb.append("\t\t\tthrow e;\n");  
  198.             sb.append("\t\t}\n");  
  199.             sb.append("\t}\n");  
  200.               
  201.             sb.append("}\n");  
  202. //          System.out.println(sb.toString());  
  203.             outputToFile(className+".java", sb.toString());  
  204.         }  
  205.     }  
  206.       
  207.     public static void main(String[] agrs) {  
  208.         GenerateServiceImpl aa = new GenerateServiceImpl();  
  209.         aa.getServiceImpl();  
  210.     }  
  211.   
  212. }  

生成mybatis的实现xml文件

[java] view plain copy
  1. package com.csair.test;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.OutputStream;  
  7. import java.sql.Connection;  
  8. import java.sql.DatabaseMetaData;  
  9. import java.sql.DriverManager;  
  10. import java.sql.ResultSet;  
  11. import java.sql.SQLException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14.   
  15. public class GenerateMybatisXml {  
  16.   
  17.     private String url = "jdbc:mysql://localhost:3306/jdz";  
  18.     private String username = "root";  
  19.     private String password = "root";  
  20.     private String driverClass = "com.mysql.jdbc.Driver";  
  21.     private DatabaseMetaData dbMetaData = null;  
  22.     private String packageNameMybatisDao = "com.csair.test.mybatisRepository";  
  23. //  private String path = "C:\\Users\\ppt\\Desktop\\test\\";  
  24.     private String path = "D:\\ppt\\workspace\\shop\\shopserver\\src\\test\\java\\com\\csair\\test\\xml\\";  
  25.       
  26.     /** 
  27.      * @Description: 获取表对应的所有列 
  28.      * @author: ppt 
  29.      * @date: 2015-3-16 上午10:13:17 
  30.      * @param tableName 
  31.      * @return: void 
  32.      */  
  33.     public void getTableColumns(String tableName) {  
  34.         try {  
  35.             ResultSet resultSetColumn = dbMetaData.getColumns(nullnull,  
  36.                     tableName, null);  
  37.             String className = getFormatString(tableName, true);//表名  
  38.             String fileName = className + "Mapper";//文件名  
  39.             String thisFileName = className + "MybatisDao";//接口地址  
  40.             StringBuffer header = new StringBuffer(  
  41.                     "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");  
  42.             header.append("<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n");  
  43.             header.append("<mapper namespace=\"");  
  44.             header.append(packageNameMybatisDao+"."+thisFileName);  
  45.             header.append("\">\n\n");  
  46.             StringBuffer footer = new StringBuffer("\n</mapper>");  
  47.             StringBuffer add = new StringBuffer();  
  48.             //增加数据  
  49.             add.append("\t<insert id=\"addEntity\" parameterType=\""+className+"\">\n");  
  50.             String insert = "\t\tinsert into " + tableName + "(";  
  51.             String column = "";  
  52.             String values = "";  
  53.             //删除数据  
  54.             StringBuffer delete = new StringBuffer();  
  55.             delete.append("\t<update id=\"deleteEntity\" parameterType=\"long\">\n");  
  56.             delete.append("\t\tupdate " + tableName + " set status = -1 where id = #{id}\n");  
  57.             delete.append("\t</update>\n\n");  
  58.             //更新数据  
  59.             StringBuffer update = new StringBuffer();  
  60.             String updateConent = "";  
  61.             update.append("\t<update id=\"updateEntity\" parameterType=\""+className+"\">\n");  
  62.             update.append("\t\tupdate " + tableName + " set ");  
  63.             //查找数据  
  64.             StringBuffer select = new StringBuffer();  
  65.             select.append("\t<select id=\"findEntity\" parameterType=\""+className+"\" resultType=\""+className+"\">\n");  
  66.             String selectContent = "\t\tselect\n";  
  67.             //查找数据list  
  68.             StringBuffer selectList = new StringBuffer();  
  69.             selectList.append("\t<select id=\"findEntityList\" parameterType=\""+className+"\" resultType=\""+className+"\">\n");  
  70.             while (resultSetColumn.next()) {  
  71.                 String columnName = resultSetColumn.getString("COLUMN_NAME");  
  72.                 String oldColumnName = columnName;  
  73.                 columnName = this.getFormatString(columnName, false);  
  74.                 //增加数据  
  75.                 if("ID".equals(columnName.toUpperCase())) {  
  76.                     continue;  
  77.                 }  
  78.                 column += columnName +",";  
  79.                 values += "#{" + columnName + "},";  
  80.                 //删除数据  
  81.                   
  82.                 //更新数据  
  83.                 updateConent += columnName + "=#{" + columnName +"},";  
  84.                 //查找数据  
  85.                 selectContent += "\t\t"+oldColumnName + " AS " + columnName + ",\n";  
  86.             }  
  87.             selectContent = selectContent.substring(0, selectContent.length()-2);  
  88.             selectContent += "\n\t\tfrom " + tableName + "\n";  
  89.             select.append(selectContent);  
  90.             select.append("\t</select>\n\n");  
  91.             selectList.append(selectContent);  
  92.             selectList.append("\t</select>\n\n");  
  93.             updateConent = updateConent.substring(0,updateConent.length()-1);  
  94.             update.append(updateConent);  
  95.             update.append(" where id = #{id}\n");  
  96.             update.append("\t</update>\n\n");  
  97.             column = column.substring(0, column.length()-1);  
  98.             values = values.substring(0,values.length()-1);  
  99.             String statement = insert + column + ") values(" + values + ")\n";  
  100.             add.append(statement);  
  101.             add.append("\t</insert>\n\n");  
  102.             header.append(add);  
  103.             header.append(delete);  
  104.             header.append(update);  
  105.             header.append(select);  
  106.             header.append(selectList);  
  107.             header.append(footer);  
  108. //          System.out.println(header.toString());  
  109.              this.outputToFile(fileName+".xml", header.toString());   
  110.         } catch (SQLException e) {  
  111.             e.printStackTrace();  
  112.         }  
  113.     }  
  114.       
  115.     public GenerateMybatisXml() {  
  116.         try {  
  117.             Class.forName(driverClass);  
  118.             Connection conn = DriverManager.getConnection(url, username, password);  
  119.             dbMetaData = conn.getMetaData();  
  120.         } catch(Exception e) {  
  121.             e.printStackTrace();  
  122.         }  
  123.     }  
  124.         
  125.     /** 
  126.      * @Description: 获取所以的表 
  127.      * @author: ppt 
  128.      * @date: 2015-3-16 上午10:12:57 
  129.      * @return: void 
  130.      */  
  131.     public List<String> getAllTableList() {    
  132.         List<String> tableList = new ArrayList<String>();  
  133.         try {    
  134.             String[] types = { "TABLE" };    
  135.             ResultSet rs = dbMetaData.getTables(nullnull"%", types);    
  136.             while (rs.next()) {    
  137.                 String tableName = rs.getString("TABLE_NAME");  //表名   
  138.                 tableList.add(tableName);  
  139.             }    
  140.         } catch (SQLException e) {    
  141.             e.printStackTrace();    
  142.         }  
  143.         return tableList;  
  144.     }    
  145.       
  146.      /**  
  147.      * 处理字符串,去掉下划线“_”,并且把下划线的下一个字符变大写,flag为true,表示首字母要大写  
  148.      * @param name  
  149.      * @param flag  
  150.      * @return  
  151.      */    
  152.     private String getFormatString(String name, boolean flag) {    
  153.         name = name.toLowerCase();    
  154.         String[] nameTemp = name.split("_");    
  155.         StringBuffer buffer = new StringBuffer();    
  156.         for(String str : nameTemp) {    
  157.             String head = str.substring(01).toUpperCase();    
  158.             String tail = str.substring(1);    
  159.             buffer.append(head+tail);    
  160.         }    
  161.         StringBuffer result = null;    
  162.         if(!flag) {    
  163.             result = new StringBuffer();    
  164.             String head = buffer.substring(01).toLowerCase();    
  165.             String tail = buffer.substring(1);    
  166.             result.append(head+tail);    
  167.             return result.toString();    
  168.         }    
  169.         return buffer.toString();    
  170.     }    
  171.     /**  
  172.      * 把String内容写到文件  
  173.      * @param fileName  
  174.      * @param content  
  175.      */    
  176.     private void outputToFile(String fileName, String content) {    
  177.         OutputStream os = null;    
  178.         try {    
  179.             os = new FileOutputStream(path+fileName);    
  180.         } catch (FileNotFoundException e1) {    
  181.             e1.printStackTrace();    
  182.         }    
  183.         byte[] b = content.getBytes();    
  184.         try {    
  185.             os.write(b);    
  186.             os.flush();    
  187.         } catch (IOException e) {    
  188.             e.printStackTrace();    
  189.         } finally {    
  190.             try {    
  191.                 os.close();    
  192.             } catch (IOException e) {    
  193.                 e.printStackTrace();    
  194.             }    
  195.         }    
  196.     }    
  197.       
  198.       
  199.     public static void main(String[] agrs) {  
  200.         GenerateMybatisXml aa = new GenerateMybatisXml();  
  201.         List<String> tableList = aa.getAllTableList();  
  202.         for(String tableName : tableList) {  
  203.             aa.getTableColumns(tableName);  
  204.         }  
  205. //      aa.getTableColumns("loan_info");  
  206.     }  
  207.       
  208.       
  209.       
  210.   
  211. }  
阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃多了抽烟想吐怎么办 晚上牙疼得要命怎么办 楼梯被火封锁后怎么办 牙齿疼怎么办能快速不疼 我被短信轰炸了怎么办 火警响了在家该怎么办 痔疮肉球变大了怎么办 痔疮长了好几个怎么办 苹果7手机丢了怎么办 如果油锅着火了怎么办 家里电气著火了怎么办 你家油锅起火了怎么办 交通事故后对方不肯去处理怎么办 租的车出了事故怎么办 借的车出了事故怎么办 台风来了怎么办小知识 台中班台风来了怎么办 地震时在五楼怎么办 小事故对方不来怎么办 发生交通事故对方不处理怎么办 当地震来了该怎么办 地震来了该怎么办教案 地震来了怎么办的问题 住30楼的地震了怎么办 在家里地震来了怎么办? 乐高地震来了怎么办? 地震来了该怎么办300字 地震来了该怎么办200 外地在北京生孩子建档怎么办 怀孕2个月头疼怎么办 怀孕6个月头疼怎么办 轮胎扎了个钉子怎么办 顶菅遇到填土区怎么办 12墙没砌在梁上怎么办 孕32周胎盘二级怎么办 孕36周胎盘三级怎么办 孕24周胎盘一级怎么办 孕24周 胎盘1级怎么办 抗核抗体1:1000怎么办 抗核抗体1:320怎么办 冒险岛2很卡怎么办