ReadTableGenerator.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package com.izouma.codegenerator;
  2. import com.izouma.awesomeadmin.model.GenCode;
  3. import com.izouma.awesomeadmin.model.TableField;
  4. import com.izouma.awesomeadmin.util.PropertiesFileLoader;
  5. import org.apache.commons.lang.StringUtils;
  6. import java.sql.*;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. public class ReadTableGenerator {
  10. public static void ReadTable(GenCode model) throws Exception {
  11. Connection conn = null;
  12. try {
  13. String[] colnames; // 列名数组
  14. String[] colTypes; //列名类型数组
  15. String[] colComments;//列名注释数组mybatis-generator-core
  16. int[] colSizes; //列名大小数组
  17. String PK_NAME = "id";//主键名
  18. //查要生成实体类的表
  19. String sql = "select * from " + model.getTableName();
  20. PreparedStatement pStemt = null;
  21. if ("Mysql".equals(model.getDataBaseType())) {
  22. Class.forName("com.mysql.jdbc.Driver");
  23. System.out.println("成功加载MySQL驱动!");
  24. PropertiesFileLoader propertiesFileLoader = PropertiesFileLoader.getInstance();
  25. propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.url");
  26. String url = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.url");
  27. String user = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.username");
  28. String password = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.password");
  29. conn = DriverManager.getConnection(url, user, password);
  30. System.out.println("成功连接到数据库!");
  31. } else if ("SqlServer".equals(model.getDataBaseType())) {
  32. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  33. System.out.println("成功加载SQLServer驱动!");
  34. PropertiesFileLoader propertiesFileLoader = PropertiesFileLoader.getInstance();
  35. propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.url");
  36. String url = propertiesFileLoader.getProperties("properties/jdbc.properties", "sqlserver.url");
  37. String user = propertiesFileLoader.getProperties("properties/jdbc.properties", "sqlserver.user");
  38. String password = propertiesFileLoader.getProperties("properties/jdbc.properties", "sqlserver.password");
  39. conn = DriverManager.getConnection(url, user, password);
  40. }
  41. pStemt = conn.prepareStatement(sql);
  42. ResultSetMetaData rsmd = pStemt.getMetaData();
  43. ResultSet pkRSet = conn.getMetaData().getPrimaryKeys(conn.getCatalog().toUpperCase(),
  44. null, model.getTableName());
  45. while (pkRSet.next()) {
  46. System.out.println(pkRSet.getString("COLUMN_NAME"));
  47. PK_NAME = pkRSet.getString("COLUMN_NAME");
  48. }
  49. int size = rsmd.getColumnCount(); //统计列
  50. colComments = new String[size];
  51. colnames = new String[size];
  52. colTypes = new String[size];
  53. colSizes = new int[size];
  54. for (int i = 0; i < size; i++) {
  55. colnames[i] = rsmd.getColumnName(i + 1);
  56. colTypes[i] = rsmd.getColumnTypeName(i + 1);
  57. colSizes[i] = rsmd.getColumnDisplaySize(i + 1);
  58. }
  59. if ("Mysql".equals(model.getDataBaseType())) {
  60. //获取注释
  61. ResultSet rs = pStemt.executeQuery("show full columns from " + model.getTableName());
  62. int j = 0;
  63. while (rs.next()) {
  64. colComments[j] = (rs.getString("Comment"));
  65. j++;
  66. }
  67. }
  68. List<TableField> tableFields = new ArrayList<>();
  69. for (int i = 0; i < colnames.length; i++) {
  70. TableField tableField = new TableField();
  71. tableField.setName(colnames[i]);
  72. tableField.setJdbcType(colTypes[i]);
  73. tableField.setNotNull(false);
  74. tableField.setPrimaryKey(PK_NAME.equals(colnames[i]) ? true : false);
  75. tableField.setAutoIncrease(PK_NAME.equals(colnames[i]) ? true : false);
  76. tableField.setRemark((StringUtils.isNotEmpty(colComments[i]) ? colComments[i] : colnames[i]));
  77. tableField.setShowInList(true);
  78. tableField.setShowInForm("ID".equalsIgnoreCase(colnames[i]) ? false : true);
  79. tableField.setFormType("singleLineText");
  80. tableFields.add(tableField);
  81. }
  82. model.setFields(tableFields);
  83. System.out.println("读取数据表成功");
  84. } catch (Exception e) {
  85. e.printStackTrace();
  86. } finally {
  87. conn.close();
  88. }
  89. }
  90. }