Java通过数据库表生成实体类详细过程

作者:你家宝宝 时间:2024-01-23 15:39:06 

项目背景

最近在做的项目,涉及到数据库的操作了,之前做的是直接调用接口,不用做存库操作。

因此要增加大量特殊格式的实体类。比如我们用的是 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操作

Java通过数据库表生成实体类详细过程

Java通过数据库表生成实体类详细过程

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

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
*/
@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;

来源:https://fengjinsong.blog.csdn.net/article/details/125958359

标签:Java,数据库表,实体类
0
投稿

猜你喜欢

  • 使用keras做SQL注入攻击的判断(实例讲解)

    2024-01-25 12:40:36
  • asp如何在线修改数据库表?

    2010-06-26 12:24:00
  • javascript面向对象技术基础(一)

    2010-02-07 13:01:00
  • JavaScript字符串对象(string)基本用法示例

    2024-04-17 10:00:31
  • python基础之元组

    2021-06-28 08:06:24
  • 发个选星星打分/投票功能函数

    2008-05-22 12:38:00
  • Python批量裁剪图片的思路详解

    2023-05-11 03:55:59
  • Mysql 增加主键或者修改主键的sql语句操作

    2024-01-20 00:22:02
  • 利用python实现后端写网页(flask框架)

    2022-06-22 04:20:50
  • 浅析JSONP技术原理及实现

    2024-05-28 15:41:10
  • JavaScript判断对象是否为数组

    2024-04-22 22:42:14
  • python正则实现提取电话功能

    2022-04-30 03:32:46
  • python机器学习库常用汇总

    2022-05-17 11:55:20
  • mybatis如何实现的数据库排序

    2024-01-24 16:35:32
  • 解决BN和Dropout共同使用时会出现的问题

    2023-05-08 14:08:19
  • SQLServer2008存储过程实现数据插入与更新

    2024-01-19 06:01:21
  • SQL Server表空间碎片化回收的实现

    2024-01-21 14:08:43
  • 玩转python爬虫之URLError异常处理

    2021-03-22 07:36:34
  • 提高javascript的速度系列(序)

    2008-07-15 12:38:00
  • CentOS7下mysql 8.0.16 安装配置方法图文教程

    2024-01-22 11:49:56
  • asp之家 网络编程 m.aspxhome.com