mysql根据数据库自动生成实体(dto,service,impl,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 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值