数据库实体自动生成

package com.example.demo.car.controller;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test {
    static String driverClass="oracle.jdbc.driver.OracleDriver"; //oracle的驱动
    static String url="jdbc:oracle:thin:@localhost:1521:orcl";  //连接oracle路径方式 “”gfs“”是要建立连接的数据库名 1521端口
    static String user="scott";   //user是数据库的用户名
    static String password="scott";  //用户登录密码
    static Pattern linePattern = Pattern.compile("_(\\w)");
    
    static String sql = "select A.column_name ,A.COMMENTS,B.DATA_TYPE\r\n" + 
               "from user_col_comments A INNER JOIN user_tab_columns B\r\n" + 
               "ON A.column_name=B.column_name\r\n" + 
               "AND A.Table_Name=B.Table_Name\r\n" + 
               "where A.Table_Name=?  \r\n" + 
               "order by column_name  ASC";
    
    public static String lineToHump(String str) {
        str = str.toLowerCase();
        Matcher matcher = linePattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }
    
    public static Connection getconn() {  //为了方便下面的讲解,这里专门建立了一个用于数据库连接的一个方法
        Connection conn=null;
        try {
             //首先建立驱动
             Class.forName("oracle.jdbc.driver.OracleDriver");
             //驱动成功后进行连接
             conn=DriverManager.getConnection(url, user, password);
             System.out.println("连接成功");
         } catch (SQLException e) {
             e.printStackTrace();
         } catch (Exception e) {
             e.printStackTrace();
         }
        return conn; //返回一个连接
    }
    
    public static List<String> connSqlList(String tableName) {
         Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs =null;
        List<String> list=new ArrayList<>();
        try {
             conn = getconn();
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, tableName.toUpperCase());
            rs = pstmt.executeQuery();
            while (rs.next()) {
                list.add(rs.getString(1)+"&&"+rs.getString(2)+"&&"+rs.getString(3));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                if(rs != null) {
                   rs.close();
                  }
                   if(pstmt != null) {
                     pstmt.close();
                  }
                   if(conn != null) {
                     conn.close();
                  }
            }catch(Exception e) {
                
            }
        }
        return list;
    }
    
    public static String getEntity(String tableName,String className,String packFile) {
        List<String> list=connSqlList(tableName);
        StringBuilder entityBuild=new StringBuilder();
        entityBuild.append("package \n");
        entityBuild.append("import \r\n");
        entityBuild.append("public class "+className+"{\n");
        list.forEach(c->{
             String arr[]=c.split("&&");
             if("VARCHAR2".equalsIgnoreCase(arr[2])) {
                 entityBuild.append("\t/**"+arr[1]+"*/\n \tprivate String "+lineToHump(arr[0])+";\r\n");
             }else if("NUMBER".equalsIgnoreCase(arr[2])) {
                 entityBuild.append("\t/**"+arr[1]+"*/\n \tprivate int "+lineToHump(arr[0])+";\r\n");
             }else if("DATE".equalsIgnoreCase(arr[2])) {
                 entityBuild.append("\t/**"+arr[1]+"*/\n \tprivate Date "+lineToHump(arr[0])+";\r\n");
             }else if("CLOB".equalsIgnoreCase(arr[2]) || "BLOB".equalsIgnoreCase(arr[2])) {
                 entityBuild.append("\t/**"+arr[1]+"*/\n \tprivate String "+lineToHump(arr[0])+";\r\n");
             }else {
                 entityBuild.append("\t/**"+arr[1]+"*/\n \tprivate String "+lineToHump(arr[0])+";\r\n");
             }
        });
        entityBuild.append("\n}");
        return entityBuild.toString();
    }

 

//生成查询语句sql
    public static String columnToTable(String tableName,String str) {
        List<String> list=connSqlList(tableName);
        String columnStr="";//表的所有字段,包含字段别名 A a,B b 用于别名查询
        String columnStr1="";//表的所有字段,示例:A,B,C  用于没有别名查询,新增
        String columnStr2="";//表的所有字段,示例:#{a}   用于新增
        String columnStr3="";//表的所有字段,示例:A=#{a}   用于修改
        
        for (int i = 0; i < list.size(); i++) {
            String arr[]=list.get(i).split("&&");
            columnStr+=arr[0]+" "+lineToHump(arr[0])+",";
            columnStr1+=arr[0]+",";
            columnStr2+="#{"+lineToHump(arr[0])+"},";
            columnStr3+=arr[0]+"="+columnStr2;
        }
        if("select".equals(str)) {
            columnStr="select "+columnStr.substring(0,columnStr.length()-1)+" from "+tableName +"where ";
        }else if("insert".equals(str)) {
            columnStr="insert into "+tableName+"() values() ";
        }else if("update".equals(str)) {
            columnStr="update "+tableName+" set ";
        }else if("delete".equals(str)) {
            columnStr="delete from "+tableName+" where ";
        }
        return columnStr;
    }
    
    public static void main(String[] args) {
        String aa=getEntity("car","aa","");
        System.out.print(aa);
    }
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值