【JAVA】根据表结构生成自定义属性文件

 

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.sql.*;
import java.util.HashMap;
import java.util.Properties;

public class SQLServerOjdbc {
    private static HashMap hashMap = new HashMap(8);

    public static void main(String[] args) throws Exception {
        String table = "WOMEN_INFO";//表名称
        Properties props = new Properties();
        props.put("remarksReporting", "true");
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String url ="jdbc:sqlserver://IP:1433;DatabaseName=cancer_dev;allowMultiQueries=true";
        String userName = "sa";
        String passWord = "sa";
        props.put("user", userName);
        props.put("password", passWord);
        Connection conn = DriverManager.getConnection(url, props);
        Statement dbmd = conn.createStatement();
        ResultSet resultSet = dbmd.executeQuery(" select a.name, cast(isnull(e.[value],'') as nvarchar(100)) as remark " +
                "from  sys.columns a inner join sys.objects c on a.object_id=c.object_id and c.type='u'" +
                "left join sys.extended_properties e on e.major_id=c.object_id " +
                "and e.minor_id=a.column_id and e.class=1 where c.name='" + table + "'");
        String fileDirPth = "H:\\table";//生成文件存放位置
        Type(conn, table);
        File pathFile = new File(fileDirPth);
        if (!pathFile.exists()) {
            pathFile.mkdirs();

        }
        File userFile = new File(fileDirPth + "/" + table + ".txt");
        if (!userFile.exists()) {
            userFile.createNewFile();
        }

        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(userFile));
        StringBuffer bufferInsert = new StringBuffer();
        StringBuffer bufferInsert2 = new StringBuffer("(");
        StringBuffer bufferUpdate = new StringBuffer(" update " + table + "\n" +
                "        <trim prefix=\"SET\" suffixOverrides=\",\">");
        bufferInsert.append("insert into " + table + "(");
        while (resultSet.next()) {
            String remark = resultSet.getString("remark");

            String name = resultSet.getString("name");
            String oldName = name;
            bufferInsert.append(name + ",");
            String type = selectType(name);
            bufferedWriter.newLine();
            name = ZFC(name);
            if (type.equals("Date")) {
                bufferedWriter.write(" @ApiModelProperty(value = \"" + remark + "\",example = \"2019-01-01 00:00:00\")");
                bufferedWriter.newLine();
                bufferInsert2.append("#{" + name + ",jdbcType=TIMESTAMP},");
                bufferUpdate.append("<if test=\"null != " + name + " and '' != " + name + "\">\n" +
                        "                " + oldName + "=#{" + name + ",jdbcType=TIMESTAMP}},\n" +
                        "            </if>");
            } else {
                bufferInsert2.append("#{" + name + "},");
                bufferedWriter.write(" @ApiModelProperty(value = \"" + remark + "\")");
                bufferedWriter.newLine();
                bufferUpdate.append("<if test=\"null != " + name + " and '' != " + name + "\">\n" +
                        "                " + oldName + "=#{" + name + "},\n" +
                        "            </if>");
            }
            bufferedWriter.write(" private " + type + "  " + name + ";");
            bufferedWriter.newLine();
        }
        bufferInsert.append(") VALUES  ");
        bufferInsert2.append(")");
        bufferedWriter.newLine();
        bufferedWriter.append("------------------insert--------------------");
        bufferedWriter.newLine();
        bufferedWriter.write(bufferInsert.append(bufferInsert2.toString()).toString());
        bufferedWriter.newLine();
        bufferedWriter.append("------------------update--------------------");
        bufferedWriter.newLine();
        bufferUpdate.append("</trim>");
        bufferedWriter.write(bufferUpdate.toString());
        bufferedWriter.close();
    }

//将数据库中的带有下划线的字段按照驼峰命名
    private static String ZFC(String colName) {
        String subFen = "";
        if (colName.indexOf("_") == -1) {
            return colName.toLowerCase();
        } else {
            String[] feng = colName.split("_");
            for (int i = 0; i < feng.length; i++) {
                if (i == 0) {
                    subFen += feng[i].toLowerCase();
                } else {
                    subFen += feng[i].substring(0, 1).toUpperCase() + feng[i].substring(1, feng[i].length()).toLowerCase();
                }
            }
        }
         return subFen;
    }
//查询字段类型
    private static void Type(Connection conn, String tableName) throws Exception {
        DatabaseMetaData dbmd = conn.getMetaData();
        ResultSet rs = dbmd.getColumns(null, "%", tableName, "%");
        while (rs.next()) {
            hashMap.put(rs.getString("COLUMN_NAME"), rs.getString("TYPE_NAME"));
         }
    }
//判断字段类型,返回对应的JAVA类型
    private static String selectType(String colName) throws Exception {
 
        String charName = hashMap.get(colName).toString().trim();
        switch (charName.hashCode()) {
            case 104431:
                return "Integer";
            case 1793702779:
                return "Date";
            default:
                return "String";
        }
    }
  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天空~华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值