[Java] java从数据库映射实体类 →→→→→进入此内容的聊天室

来自 , 2020-11-30, 写在 Java, 查看 164 次.
URL http://www.code666.cn/view/c952ce98
  1. package com.share.barter.tool;
  2.  
  3. import java.io.File;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.io.PrintWriter;
  7. import java.sql.Connection;
  8. import java.sql.DriverManager;
  9. import java.sql.PreparedStatement;
  10. import java.sql.ResultSetMetaData;
  11. import java.sql.SQLException;
  12. import java.util.Date;
  13.  
  14. /**
  15.  * POJO Product
  16.  * @author  Tumi
  17.  * 日期:2012-10-10
  18.  */
  19. public class GenEntity {
  20.        
  21.         private String tablename = "Business_has_Barter";//表名
  22.         private String[] colnames; // 列名数组
  23.         private String[] colTypes; //列名类型数组
  24.         private int[] colSizes; //列名大小数组
  25.         private boolean f_util = false; // 是否需要导入包java.util.*
  26.         private boolean f_sql = false; // 是否需要导入包java.sql.*
  27.    
  28.     //数据库连接
  29.          private static final String URL ="jdbc:mysql://localhost:3306/barter";
  30.          private static final String NAME = "root";
  31.          private static final String PASS = "root";
  32.          private static final String DRIVER ="com.mysql.jdbc.Driver";
  33.  
  34.         /*
  35.          * 构造函数
  36.          */
  37.         public GenEntity(){
  38.         //创建连接
  39.         Connection con;
  40.                 //查要生成实体类的表
  41.         String sql = "select * from " + tablename;
  42.         PreparedStatement pStemt = null;
  43.         try {
  44.                 try {
  45.                                 Class.forName(DRIVER);
  46.                         } catch (ClassNotFoundException e1) {
  47.                                 // TODO Auto-generated catch block
  48.                                 e1.printStackTrace();
  49.                         }
  50.                 con = DriverManager.getConnection(URL,NAME,PASS);
  51.                         pStemt = con.prepareStatement(sql);
  52.                         ResultSetMetaData rsmd = pStemt.getMetaData();
  53.                         int size = rsmd.getColumnCount();       //统计列
  54.                         colnames = new String[size];
  55.                         colTypes = new String[size];
  56.                         colSizes = new int[size];
  57.                         for (int i = 0; i < size; i++) {
  58.                                 colnames[i] = rsmd.getColumnName(i + 1);
  59.                                 colTypes[i] = rsmd.getColumnTypeName(i + 1);
  60.                                
  61.                                 if(colTypes[i].equalsIgnoreCase("datetime")){
  62.                                         f_util = true;
  63.                                 }
  64.                                 if(colTypes[i].equalsIgnoreCase("image") || colTypes[i].equalsIgnoreCase("text")){
  65.                                         f_sql = true;
  66.                                 }
  67.                                 colSizes[i] = rsmd.getColumnDisplaySize(i + 1);
  68.                         }
  69.                        
  70.                         String content = parse(colnames,colTypes,colSizes);
  71.                        
  72.                         try {
  73.                                 File directory = new File("");
  74.                                 //System.out.println("绝对路径:"+directory.getAbsolutePath());
  75.                                 //System.out.println("相对路径:"+directory.getCanonicalPath());
  76.                                 String path=this.getClass().getResource("").getPath();
  77.                                
  78.                                 System.out.println(path);
  79.                                 System.out.println("src/?/"+path.substring(path.lastIndexOf("/com/", path.length())) );
  80.                                 FileWriter fw = new FileWriter(directory.getAbsolutePath()+ "/src/"+path.substring(path.lastIndexOf("/com/", path.length()), path.length()) + initcap(tablename) + ".java");
  81.                                 PrintWriter pw = new PrintWriter(fw);
  82.                                 pw.println(content);
  83.                                 pw.flush();
  84.                                 pw.close();
  85.                         } catch (IOException e) {
  86.                                 e.printStackTrace();
  87.                         }
  88.                        
  89.                 } catch (SQLException e) {
  90.                         e.printStackTrace();
  91.                 } finally{
  92. //                      try {
  93. //                              con.close();
  94. //                      } catch (SQLException e) {
  95. //                              // TODO Auto-generated catch block
  96. //                              e.printStackTrace();
  97. //                      }
  98.                 }
  99.     }
  100.  
  101.         /**
  102.          * 功能:生成实体类主体代码
  103.          * @param colnames
  104.          * @param colTypes
  105.          * @param colSizes
  106.          * @return
  107.          */
  108.         private String parse(String[] colnames, String[] colTypes, int[] colSizes) {
  109.                 StringBuffer sb = new StringBuffer();
  110.                
  111.                 //判断是否导入工具包
  112.                 if(f_util){
  113.                         sb.append("import java.util.Date;\r\n");
  114.                 }
  115.                 if(f_sql){
  116.                         sb.append("import java.sql.*;\r\n");
  117.                 }
  118.                 sb.append("package com.share.barter.tool;\r\n");
  119.                 sb.append("\r\n");
  120.                 //注释部分
  121.                 sb.append("   /**\r\n");
  122.                 sb.append("    * "+tablename+" 实体类\r\n");
  123.                 sb.append("    * "+new Date()+"  Ze Ming\r\n");
  124.                 sb.append("    */ \r\n");
  125.                 //实体部分
  126.                 sb.append("\r\n\r\npublic class " + initcap(tablename) + "{\r\n");
  127.                 processAllAttrs(sb);//属性
  128.                 processAllMethod(sb);//get set方法
  129.                 sb.append("}\r\n");
  130.                
  131.         //System.out.println(sb.toString());
  132.                 return sb.toString();
  133.         }
  134.        
  135.         /**
  136.          * 功能:生成所有属性
  137.          * @param sb
  138.          */
  139.         private void processAllAttrs(StringBuffer sb) {
  140.                
  141.                 for (int i = 0; i < colnames.length; i++) {
  142.                         sb.append("\tprivate " + sqlType2JavaType(colTypes[i]) + " " + colnames[i] + ";\r\n");
  143.                 }
  144.                
  145.         }
  146.  
  147.         /**
  148.          * 功能:生成所有方法
  149.          * @param sb
  150.          */
  151.         private void processAllMethod(StringBuffer sb) {
  152.                
  153.                 for (int i = 0; i < colnames.length; i++) {
  154.                         sb.append("\tpublic void set" + initcap(colnames[i]) + "(" + sqlType2JavaType(colTypes[i]) + " " +
  155.                                         colnames[i] + "){\r\n");
  156.                         sb.append("\tthis." + colnames[i] + "=" + colnames[i] + ";\r\n");
  157.                         sb.append("\t}\r\n");
  158.                         sb.append("\tpublic " + sqlType2JavaType(colTypes[i]) + " get" + initcap(colnames[i]) + "(){\r\n");
  159.                         sb.append("\t\treturn " + colnames[i] + ";\r\n");
  160.                         sb.append("\t}\r\n");
  161.                 }
  162.                
  163.         }
  164.        
  165.         /**
  166.          * 功能:将输入字符串的首字母改成大写
  167.          * @param str
  168.          * @return
  169.          */
  170.         private String initcap(String str) {
  171.                
  172.                 char[] ch = str.toCharArray();
  173.                 if(ch[0] >= 'a' && ch[0] <= 'z'){
  174.                         ch[0] = (char)(ch[0] - 32);
  175.                 }
  176.                
  177.                 return new String(ch);
  178.         }
  179.  
  180.         /**
  181.          * 功能:获得列的数据类型
  182.          * @param sqlType
  183.          * @return
  184.          */
  185.         private String sqlType2JavaType(String sqlType) {
  186.                
  187.                 if(sqlType.equalsIgnoreCase("bit")){
  188.                         return "boolean";
  189.                 }else if(sqlType.equalsIgnoreCase("tinyint")){
  190.                         return "byte";
  191.                 }else if(sqlType.equalsIgnoreCase("smallint")){
  192.                         return "short";
  193.                 }else if(sqlType.equalsIgnoreCase("int")){
  194.                         return "int";
  195.                 }else if(sqlType.equalsIgnoreCase("bigint")){
  196.                         return "long";
  197.                 }else if(sqlType.equalsIgnoreCase("float")){
  198.                         return "float";
  199.                 }else if(sqlType.equalsIgnoreCase("decimal") || sqlType.equalsIgnoreCase("numeric")
  200.                                 || sqlType.equalsIgnoreCase("real") || sqlType.equalsIgnoreCase("money")
  201.                                 || sqlType.equalsIgnoreCase("smallmoney")){
  202.                         return "double";
  203.                 }else if(sqlType.equalsIgnoreCase("varchar") || sqlType.equalsIgnoreCase("char")
  204.                                 || sqlType.equalsIgnoreCase("nvarchar") || sqlType.equalsIgnoreCase("nchar")
  205.                                 || sqlType.equalsIgnoreCase("text")){
  206.                         return "String";
  207.                 }else if(sqlType.equalsIgnoreCase("datetime")){
  208.                         return "Date";
  209.                 }else if(sqlType.equalsIgnoreCase("image")){
  210.                         return "Blod";
  211.                 }
  212.                
  213.                 return null;
  214.         }
  215.        
  216.         /**
  217.          * 出口
  218.          * TODO
  219.          * @param args
  220.          */
  221.         public static void main(String[] args) {
  222.                
  223.                 new GenEntity();
  224.                
  225.         }
  226.  
  227. }
  228.  
  229. //java/5680

回复 "java从数据库映射实体类"

这儿你可以回复上面这条便签

captcha