Java通過數(shù)據(jù)庫表生成實體類詳細過程
項目背景
最近在做的項目,涉及到數(shù)據(jù)庫的操作了,之前做的是直接調(diào)用接口,不用做存庫操作。
因此要增加大量特殊格式的實體類。比如我們用的是 JPA ,要增加一些注解,額外還有 lombok 的一些注解。
所以,這個項目的目的是,根據(jù)數(shù)據(jù)庫中的某張表,生成與之對應(yīng)的實體類。使用的技術(shù)是Freemarker 模板引擎,自定義了實體的模板。
最終的目標(biāo)是,生成實體類的內(nèi)容即可。有需要的朋友,可以改改,直接生成java文件。我這里覺得 使用 swagger 生成代碼,放到最終的響應(yīng)里,也是很不錯的。
使用的是 Java 11 版本,用到的技術(shù)有 lombok,swagger,springboot,spring-data,freemarker,druid。
項目代碼
項目代碼托管在以下位置。各位可以直接 pull 下來,運行。需要注意的是,改數(shù)據(jù)庫連接。
https://gitee.com/fengsoshuai/generate-entity-from-table
使用說明
配置相關(guān)
在 application.yml 文件中配置好自己的數(shù)據(jù)庫。
隨后啟動 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 對應(yīng)的連接地址。會進入 swagger 的測試界面。
swagger操作


輸入?yún)?shù)后,點擊發(fā)送按鈕,在響應(yīng)結(jié)果中會帶出你想要的結(jié)果,比如:
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 等特殊類型做兼容,需要手動導(dǎo)入包。
以上的實體類,是從數(shù)據(jù)庫表中查 student 表,生成的。
我的數(shù)據(jù)表結(jié)構(gòu)是:
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;
到此這篇關(guān)于Java通過數(shù)據(jù)庫表生成實體類詳細過程的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)庫表生成實體類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java使用CompletableFuture分批處理任務(wù)實現(xiàn)
本文主要介紹了java使用CompletableFuture分批處理任務(wù)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Java編程中快速排序算法的實現(xiàn)及相關(guān)算法優(yōu)化
這篇文章主要介紹了Java編程中快速排序算法的實現(xiàn)及相關(guān)算法優(yōu)化,快速排序算法的最差時間復(fù)雜度為(n^2),最優(yōu)時間復(fù)雜度為(n\log n),存在優(yōu)化的空間,需要的朋友可以參考下2016-05-05
谷歌二維碼引擎com.google.zxing二維碼生成與解析
這篇文章主要給大家介紹了關(guān)于谷歌二維碼引擎com.google.zxing二維碼生成與解析的相關(guān)資料,zxing是google開源的二維碼生成和解析工具,需要的朋友可以參考下2023-07-07
Intellij IDEA實現(xiàn)SpringBoot項目多端口啟動的兩種方法
有時候使用springboot項目時遇到這樣一種情況,用一個項目需要復(fù)制很多遍進行測試,除了端口號不同以外,沒有任何不同。遇到這種情況怎么辦呢?這時候可以使用Intellij IDEA解決2018-06-06
SpringBoot或SpringAI對接DeepSeek大模型的詳細步驟
這篇文章主要介紹了DeepSeek智能助手的使用方法和步驟,包括引入庫、配置環(huán)境變量和配置,文章詳細描述了流式請求和非流式請求的實現(xiàn)方式,需要的朋友可以參考下2025-02-02
SpringCloud OpenFeign與Ribbon客戶端配置詳解
在springcloud中,openfeign是取代了feign作為負載均衡組件的,feign最早是netflix提供的,他是一個輕量級的支持RESTful的http服務(wù)調(diào)用框架,內(nèi)置了ribbon,而ribbon可以提供負載均衡機制,因此feign可以作為一個負載均衡的遠程服務(wù)調(diào)用框架使用2022-11-11

