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

 更新时间:2023年02月07日 11:11:18   作者:你家宝宝  
这篇文章主要介绍了Java通过数据库表生成实体类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

项目背景

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

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

到此这篇关于Java通过数据库表生成实体类详细过程的文章就介绍到这了,更多相关Java数据库表生成实体类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java使用CompletableFuture分批处理任务实现

    java使用CompletableFuture分批处理任务实现

    本文主要介绍了java使用CompletableFuture分批处理任务实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • Java中超详细this与super的概念和用法

    Java中超详细this与super的概念和用法

    这篇文章主要介绍了Java中超详细this与super的概念和用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Java编程中快速排序算法的实现及相关算法优化

    Java编程中快速排序算法的实现及相关算法优化

    这篇文章主要介绍了Java编程中快速排序算法的实现及相关算法优化,快速排序算法的最差时间复杂度为(n^2),最优时间复杂度为(n\log n),存在优化的空间,需要的朋友可以参考下
    2016-05-05
  • 谷歌二维码引擎com.google.zxing二维码生成与解析

    谷歌二维码引擎com.google.zxing二维码生成与解析

    这篇文章主要给大家介绍了关于谷歌二维码引擎com.google.zxing二维码生成与解析的相关资料,zxing是google开源的二维码生成和解析工具,需要的朋友可以参考下
    2023-07-07
  • Intellij IDEA实现SpringBoot项目多端口启动的两种方法

    Intellij IDEA实现SpringBoot项目多端口启动的两种方法

    有时候使用springboot项目时遇到这样一种情况,用一个项目需要复制很多遍进行测试,除了端口号不同以外,没有任何不同。遇到这种情况怎么办呢?这时候可以使用Intellij IDEA解决
    2018-06-06
  • java maven中如何引入自己的lib

    java maven中如何引入自己的lib

    在JavaMaven项目中引入自己的库可以简化为几个步骤:首先,确保库以JAR格式存在或打包成JAR;其次,将JAR文件放置在项目目录或安装到本地Maven仓库;最后,在pom.xml中添加依赖,这样做可以使项目更加模块化,便于管理和维护,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • java的Console类的使用方法及实例

    java的Console类的使用方法及实例

    这篇文章主要介绍了java的Console类的使用方法及实例的相关资料,需要的朋友可以参考下
    2017-07-07
  • Java中ArrayList类详细介绍

    Java中ArrayList类详细介绍

    这篇文章主要介绍了Java中ArrayList类详细介绍的相关资料,需要的朋友可以参考下
    2017-04-04
  • SpringBoot或SpringAI对接DeepSeek大模型的详细步骤

    SpringBoot或SpringAI对接DeepSeek大模型的详细步骤

    这篇文章主要介绍了DeepSeek智能助手的使用方法和步骤,包括引入库、配置环境变量和配置,文章详细描述了流式请求和非流式请求的实现方式,需要的朋友可以参考下
    2025-02-02
  • SpringCloud OpenFeign与Ribbon客户端配置详解

    SpringCloud OpenFeign与Ribbon客户端配置详解

    在springcloud中,openfeign是取代了feign作为负载均衡组件的,feign最早是netflix提供的,他是一个轻量级的支持RESTful的http服务调用框架,内置了ribbon,而ribbon可以提供负载均衡机制,因此feign可以作为一个负载均衡的远程服务调用框架使用
    2022-11-11

最新评论