Java 根据数据库表生成实体类

本文介绍了一个基于Freemarker和Swagger的项目,通过数据库表自动生成符合JPA规范的Java实体类,简化了数据库操作的代码编写。读者可直接下载并配置应用,用于快速生成Spring Boot项目的实体类。

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

项目背景

最近在做的项目,涉及到数据库的操作了,之前做的是直接调用接口,不用做存库操作。
因此要增加大量特殊格式的实体类。比如我们用的是 JPA ,要增加一些注解,额外还有 lombok 的一些注解。

所以,这个项目的目的是,根据数据库中的某张表,生成与之对应的实体类。使用的技术是Freemarker 模板引擎,自定义了实体的模板。

最终的目标是,生成实体类的内容即可。有需要的朋友,可以改改,直接生成java文件。我这里觉得 使用 swagger 生成代码,放到最终的响应里,也是很不错的。

使用的是 Java 11 版本,用到的技术有 lombok,swagger,springboot,spring-data,freemarker,druid。

项目代码

项目代码托管在以下位置。各位可以直接 pull 下来,运行。需要注意的是,改数据库连接。

https://gitee.com/fengsoshuai/generate-entity-from-table

使用说明

配置相关

在 application.yml 文件中配置好自己的数据库。

随后启动 GenerateEntityFromTableApplication 类。

控制台会输出:

	Application 'GenerateEntity' is running! Access URLs:
	Local: 		http://localhost:80
	External: 	http://192.168.1.2:80
	Doc: 	http://192.168.1.2:80/doc.html

访问最后一行 Doc 对应的连接地址。会进入 swagger 的测试界面。

swagger操作

在这里插入图片描述
在这里插入图片描述
输入参数后,点击发送按钮,在响应结果中会带出你想要的结果,比如:

package org.feng.entity;

import lombok.Data;
import org.springframework.data.relational.core.mapping.Column;
import org.springframework.data.relational.core.mapping.Table;

/**
 * 宝宝写的一实体类
 *
 * @version v2.0
 * @author: 宝宝
 * @date: 2022年07月24日 13时19分
 */
@Data
@Table("student")
public class StudentData {

    @Column("id")
    private Integer id;
    @Column("name")
    private String name;
    @Column("age")
    private Integer age;
    @Column("weight")
    private Double weight;
    @Column("height")
    private Double height;
    @Column("modified")
    private LocalDateTime modified;
}

目前的缺点

目前的缺点是,没有对LocalDateTime 等特殊类型做兼容,需要手动导入包。

以上的实体类,是从数据库表中查 student 表,生成的。

我的数据表结构是:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `id` int(0) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `age` int(0) NULL DEFAULT NULL,
  `weight` double NULL DEFAULT NULL,
  `height` double NULL DEFAULT NULL,
  `modified` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0),
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你家宝宝

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

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

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

打赏作者

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

抵扣说明:

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

余额充值