spring实体类封装 逆向生成

这篇博客详细介绍了如何使用Spring逆向工程从MySQL数据库中生成Java实体类。首先,建立数据库连接,接着获取表的列名。通过特定SQL查询获取列信息,然后配置编码格式和字母大小写规则。最后,导入并运行生成的列名类,将其置于实体类包下。这是一个快速创建实体类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步先连接数据库

public class DBUHelpers {
    private static String DRIVER = "com.mysql.jdbc.Driver";
    private static String URL = "jdbc:mysql://localhost:3306/zhongyin?useSSL=false&serverTimezone=UTC&characterEncoding=utf8";
    private static String USERNAME = "root";
    private static String PASSWORD = "123456";
    private static Connection conn;
    private static PreparedStatement ps;
    private static ResultSet rs;

    //预加载
    static{
        try {
            Class.forName(DRIVER);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    //建立连接
    public static Connection getConn(){
        try {
            conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
            return conn;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

第二部你要通过数据库找到自己所在表中的三个列名

SELECT COLUMN_NAME name,DATA_TYPE type,COLUMN_COMMENT comment FROM information_schema.`COLUMNS` where TABLE_SCHEMA=? and TABLE_NAME=?

sql语句的由来

第三步 

//sql语句把三个需要的搞出来 name 名称 type 类型 comment 注释
    static String sql="SELECT COLUMN_NAME name,DATA_TYPE type,COLUMN_COMMENT comment FROM information_schema.`COLUMNS` where TABLE_SCHEMA=? and TABLE_NAME=?";
    static String[] table={"zhongyin","doctor"};
    static String packages="cn.hp.ioc";
    static String tableName=Change_Upper(table[1]);
    static StringBuffer parameter=new StringBuffer();

第四步

配置字母大小写

/**
     * 首字母大写,如果有,则下一个字母大写
     * @param s1
     * @return
     */
    public static String Change_Upper(String s1) {
        String r = "";
        String[] a = s1.split("_");//以_为分隔符,将单词分开
        String[] b = new String[a.length + 1];
        for (int i = 0; i < a.length; i++) {
            //substring(0,1)首字母,toUpperCase()大写
            b[i] = a[i].substring(0, 1).toUpperCase() + a[i].substring(1, a[i].length());
            r = r + b[i];
        }
        return r;
    }


    /**
     * //类型转换
     * @param dataType
     * @return
     */
    public static String convertDataType(String dataType) {
        switch (dataType) {
            case "varchar":
            case "longtext":
            case "text":
                return "String";
            case "double":
                return "Double";
            case "int":
            case "tinyint":
                return "Integer";
            case "bigint":
                return "Long";
            case "datetime":
            case "timestamp":
            case "Date":
                return "Date";
            case "decimal":
                return "BigDecimal";
            default:
                return "";
        }
    }

然后设置编码格式

 /**
     * 将更改后的文件输出
     * @param clz
     * @param path
     */
    public static void outPW(String clz,String path){
        PrintWriter pw=null;
        try {
            pw = new PrintWriter(path,"UTF-8");
            pw.write(clz);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(pw!=null){
                pw.close();
            }
        }
    }

第五步开始导入

 public static void main(String[] args) {
        String clz="package ${packages}.entity;\n" +
                "import lombok.Data;\n" +
                "import java.util.Date;\n" +
                "\n" +
                "@Data\n" +
                "public class $(tableName) {\n" +
                "  ${parameter}\n" +
                "\n" +
                "}\n";
        List<Map> list = DBUHelpers.select(sql,table);
        for (Map map:list){
            System.out.println(map);
            parameter.append(" /**\n")
                    .append("  *"+map.get("comment")+"\n")
                    .append("  **/\n")
                    .append("     private"+" "+convertDataType(map.get("type").toString())+" "+map.get("name")+" "+";\n");
        }
        System.out.println(clz.replace("${packages}", packages)
                .replace("$(tableName)",tableName)
                .replace("${parameter}",parameter.toString()));
        outPW(clz.replace("${packages}", packages)
                .replace("$(tableName)",tableName)
                .replace("${parameter}",parameter.toString()),tableName.concat(".java"));
    }

第六步开始运行

一个列名类,拉到你封装实体类的包下即可

这就是逆向生成实体类,不懂不会可以私聊我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值