MybatisPlus代碼生成器使用示例
前言
MyBatis-Plus 的代碼生成器主要是基于 MyBatis-Plus 的元數(shù)據(jù)分析功能,通過(guò)讀取數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)信息,生成對(duì)應(yīng)的 Entity、Mapper、Service、Controller 等代碼文件。
元數(shù)據(jù)分析: 代碼生成器首先連接到數(shù)據(jù)庫(kù),讀取數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)信息,包括表名、字段名、字段類型、注釋等元數(shù)據(jù)信息。
模板引擎: 代碼生成器使用模板引擎來(lái)生成代碼文件。模板文件定義了生成文件的結(jié)構(gòu)和內(nèi)容,其中可以包含一些占位符,用于動(dòng)態(tài)替換成實(shí)際的數(shù)據(jù),如表名、字段名等。
代碼生成: 根據(jù)元數(shù)據(jù)信息和模板文件,代碼生成器生成對(duì)應(yīng)的 Java 代碼文件。生成的文件包括 Entity 類(對(duì)應(yīng)數(shù)據(jù)庫(kù)表的字段)、Mapper 接口(提供數(shù)據(jù)庫(kù)操作方法)、Service 類(封裝業(yè)務(wù)邏輯)、Controller 類(處理 HTTP 請(qǐng)求)等。
自定義配置: 代碼生成器提供了豐富的配置選項(xiàng),可以根據(jù)用戶的需求進(jìn)行靈活配置。用戶可以指定生成的包名、輸出路徑、命名規(guī)則等,以滿足不同項(xiàng)目的需求。
執(zhí)行生成: 用戶運(yùn)行代碼生成器的程序,代碼生成器根據(jù)配置信息讀取數(shù)據(jù)庫(kù)表結(jié)構(gòu),并根據(jù)模板文件生成對(duì)應(yīng)的代碼文件,最終輸出到指定的路徑中。
總的來(lái)說(shuō),MyBatis-Plus 的代碼生成器利用數(shù)據(jù)庫(kù)的元數(shù)據(jù)信息和模板文件,自動(dòng)化地生成與數(shù)據(jù)庫(kù)表對(duì)應(yīng)的 Java 代碼文件,極大地提高了開(kāi)發(fā)效率,減少了重復(fù)勞動(dòng)。
針對(duì)數(shù)據(jù)庫(kù)中的實(shí)體類表,自動(dòng)生成相關(guān)的pojo類,mapper,service等
1. Get-Started
基于mybatisplus,idea下載mybatisplus插件
sql文件
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET NAMES utf8 */; /*!50503 SET NAMES utf8mb4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; DROP TABLE IF EXISTS `learning_lesson`; CREATE TABLE IF NOT EXISTS `learning_lesson` ( `id` bigint NOT NULL COMMENT '主鍵', `user_id` bigint NOT NULL COMMENT '學(xué)員id', `course_id` bigint NOT NULL COMMENT '課程id', `status` tinyint DEFAULT '0' COMMENT '課程狀態(tài),0-未學(xué)習(xí),1-學(xué)習(xí)中,2-已學(xué)完,3-已失效', `week_freq` tinyint DEFAULT NULL COMMENT '每周學(xué)習(xí)頻率,例如每周學(xué)習(xí)6小節(jié),則頻率為6', `plan_status` tinyint NOT NULL DEFAULT '0' COMMENT '學(xué)習(xí)計(jì)劃狀態(tài),0-沒(méi)有計(jì)劃,1-計(jì)劃進(jìn)行中', `learned_sections` int NOT NULL DEFAULT '0' COMMENT '已學(xué)習(xí)小節(jié)數(shù)量', `latest_section_id` bigint DEFAULT NULL COMMENT '最近一次學(xué)習(xí)的小節(jié)id', `latest_learn_time` datetime DEFAULT NULL COMMENT '最近一次學(xué)習(xí)的時(shí)間', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', `expire_time` datetime DEFAULT NULL COMMENT '過(guò)期時(shí)間', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `idx_user_id` (`user_id`,`course_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='學(xué)生課程表'; -- 正在導(dǎo)出表 tj_learning.learning_lesson 的數(shù)據(jù):~4 rows (大約) DELETE FROM `learning_lesson`; INSERT INTO `learning_lesson` (`id`, `user_id`, `course_id`, `status`, `week_freq`, `plan_status`, `learned_sections`, `latest_section_id`, `latest_learn_time`, `create_time`, `expire_time`, `update_time`) VALUES (1, 2, 2, 2, 6, 1, 12, 16, '2023-04-11 22:34:45', '2022-08-05 20:02:50', '2023-08-05 20:02:29', '2023-04-19 10:29:29'), (2, 2, 3, 1, 4, 1, 3, 31, '2023-04-19 11:42:50', '2022-08-06 15:16:48', '2023-08-06 15:16:37', '2023-04-19 11:42:50'), (1585170299127607297, 129, 2, 0, NULL, 0, 0, 16, '2023-04-11 22:37:05', '2022-12-05 23:00:29', '2023-10-26 15:14:54', '2023-04-11 22:37:05'), (1601061367207464961, 2, 1549025085494521857, 1, 3, 1, 4, 1550383240983875589, '2023-04-11 16:34:44', '2022-12-09 11:49:11', '2023-12-09 11:49:11', '2023-04-11 16:34:43'); /*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */; /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; /*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;
代碼生成前的目錄結(jié)構(gòu)
2. 代碼生成步驟
2.1 連接數(shù)據(jù)庫(kù)
2.2 配置代碼生成器
點(diǎn)擊 code generator
2.3 生成的代碼
替換id生成方式,改為雪花算法
2.4 單元測(cè)試
到此這篇關(guān)于MybatisPlus代碼生成器使用示例的文章就介紹到這了,更多相關(guān)MybatisPlus 代碼生成器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java并發(fā)編程中使用Executors類創(chuàng)建和管理線程的用法
這篇文章主要介紹了Java并發(fā)編程中使用Executors類創(chuàng)建和管理線程的用法,文中舉了用其啟動(dòng)線程和設(shè)置線程優(yōu)先級(jí)的例子,需要的朋友可以參考下2016-03-03深入淺析springboot中static和templates區(qū)別
這篇文章主要介紹了springboot中static和templates區(qū)別,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02Spring中利用SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)配置的示例
定時(shí)任務(wù)是一項(xiàng)至關(guān)重要的功能,它們使得我們能夠按照預(yù)定的時(shí)間執(zhí)行特定的任務(wù),本文主要介紹了Spring中利用SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)配置的示例,感興趣的可以了解一下2024-05-05springboot使用redis實(shí)現(xiàn)從配置到實(shí)戰(zhàn)
本文主要介紹了springboot使用redis ,采用的是RedisTemplate的形式,還有一種采用spring支持的注解進(jìn)行訪問(wèn)緩存,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問(wèn)題
這篇文章主要介紹了解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07簡(jiǎn)單了解java類型轉(zhuǎn)換常見(jiàn)的錯(cuò)誤
這篇文章主要介紹了簡(jiǎn)單了解java類型轉(zhuǎn)換常見(jiàn)的錯(cuò)誤,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04