MybatisPlus代码生成器

article/2025/10/12 12:37:06

代码生成器

问题导入

如果只给一张表的字段信息,能够推演出Domain、Dao层的代码?

1. MyBatisPlus提供模板

  • Mapper接口模板

image-20210801224114650

  • 实体对象类模板

image-20210801184632944

2. 工程搭建和基本代码编写

  • 第一步:创建SpringBoot工程,添加代码生成器相关依赖,其他依赖自行添加
<!--代码生成器-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version>
</dependency><!--velocity模板引擎-->
<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version>
</dependency>

配置前目录结构
image-20220318102457139

  • 第二步:编写代码生成器类
package com.itheima;import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;public class Generator {public static void main(String[] args) {//1. 创建代码生成器对象,执行生成代码操作/*** 第一步:  使用代码生成器*///怎么用代码生成器呢?//    1.创建代码生成器对象//    2.执行代码生成器    //mp包里面的AutoGeneratorAutoGenerator autoGenerator = new AutoGenerator();//    告诉它怎么生成,在哪生成//datasource数据源配置DataSourceConfig dataSource = new DataSourceConfig();dataSource.setDriverName("com.mysql.cj.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC");dataSource.setUsername("root");dataSource.setPassword("123456");autoGenerator.setDataSource(dataSource);//会在D盘生成一个com文件,但是这个位置是不对的,需要我们再进一步配置//3. 执行生成操作autoGenerator.execute();}
}

3. 开发者自定义配置

  • 设置全局配置
        /*** 第二步:    设置全局配置*/GlobalConfig globalConfig = new GlobalConfig();//默认输出D盘根下,设置到这一目录下  mybatis_04-generator/src/main/javaglobalConfig.setOutputDir(System.getProperty("user.dir")+"/mybatis_04-generator/src/main/java");//globalConfig.setOutputDir(System.getProperty("user.dir")+"\\src\\main\\java");//      \\src\\main\\java//设置完之后是否打开资源管理器   NOglobalConfig.setOpen(false);//设置作者globalConfig.setAuthor("黑马程序员");//设置是否覆盖原始生成的文件globalConfig.setFileOverride(true);//设置数据层接口名,%s为占位符  代表数据库中的表名或模块名globalConfig.setMapperName("%sDao");//设置id生成策略globalConfig.setIdType(IdType.ASSIGN_ID);autoGenerator.setGlobalConfig(globalConfig);

image-20220318100109974

  • 设置包名相关配置
        /*** 第三步:    设置包名相关配置*/PackageConfig packageConfig  =new PackageConfig();//设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径packageConfig.setParent("com.aaa");//设置实体类包名packageConfig.setEntity("domain");//设置数据层包名packageConfig.setMapper("dao");autoGenerator.setPackageInfo(packageConfig);

image-20220318101333053

  • 策略设置
        /*** 第四步:   策略设置*/StrategyConfig strategyConfig = new StrategyConfig();//设置当前参与生成的表名,参数为可变参数   生成指定表strategyConfig.setInclude("tbl_user");//设置数据库表的前缀名称,模块名=数据库表名-前缀名   User=tbl_user - tbl_strategyConfig.setTablePrefix("tbl_");//是否启用Rest风格strategyConfig.setRestControllerStyle(true);//设置乐观锁字段名strategyConfig.setVersionFieldName("version");//设置逻辑删除字段名strategyConfig.setLogicDeleteFieldName("deleted");//设置是否启用LombokstrategyConfig.setEntityLombokModel(true);autoGenerator.setStrategy(strategyConfig);

配置后执行main方法并删除mapper包后的目录结构
在这里插入图片描述

说明:源码及配置,在开发时可以直接复制稍作修改,然后使用

pom.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version></parent><groupId>com.example</groupId><artifactId>mybatis_04-generator</artifactId><version>0.0.1-SNAPSHOT</version><properties><java.version>1.8</java.version></properties><dependencies><!--spring webmvc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--自己添加的=================================================--><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--首次出现的--><!--代码生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><!--velocity模板引擎--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version></dependency><!--自己添加的=================================================--><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

CodeGenerator java文件

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;public class CodeGenerator {//直接运行帮我们生成代码public static void main(String[] args) {/*** 第一步:  使用代码生成器*///怎么用代码生成器呢?//    1.创建代码生成器对象//    2.执行代码生成器    //mp包里面的AutoGeneratorAutoGenerator autoGenerator = new AutoGenerator();//    告诉它怎么生成,在哪生成//datasource数据源配置DataSourceConfig dataSource = new DataSourceConfig();dataSource.setDriverName("com.mysql.cj.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC");dataSource.setUsername("root");dataSource.setPassword("123456");autoGenerator.setDataSource(dataSource);//会在D盘生成一个com文件,但是这个位置是不对的,需要我们再进一步配置/*** 第二步:    设置全局配置*/GlobalConfig globalConfig = new GlobalConfig();//默认输出D盘根下,设置到这一目录下  mybatis_04-generator/src/main/javaglobalConfig.setOutputDir(System.getProperty("user.dir")+"/mybatis_04-generator/src/main/java");//globalConfig.setOutputDir(System.getProperty("user.dir")+"\\src\\main\\java");//      \\src\\main\\java//设置完之后是否打开资源管理器   NOglobalConfig.setOpen(false);//设置作者globalConfig.setAuthor("黑马程序员");//设置是否覆盖原始生成的文件globalConfig.setFileOverride(true);//设置数据层接口名,%s为占位符  代表数据库中的表名或模块名globalConfig.setMapperName("%sDao");//设置id生成策略globalConfig.setIdType(IdType.ASSIGN_ID);autoGenerator.setGlobalConfig(globalConfig);/*** 第三步:    设置包名相关配置*/PackageConfig packageConfig  =new PackageConfig();//设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径packageConfig.setParent("com.aaa");//设置实体类包名packageConfig.setEntity("domain");//设置数据层包名packageConfig.setMapper("dao");autoGenerator.setPackageInfo(packageConfig);/*** 第四步:   策略设置*/StrategyConfig strategyConfig = new StrategyConfig();//设置当前参与生成的表名,参数为可变参数   生成指定表strategyConfig.setInclude("tbl_user");//设置数据库表的前缀名称,模块名=数据库表名-前缀名   User=tbl_user - tbl_strategyConfig.setTablePrefix("tbl_");//是否启用Rest风格strategyConfig.setRestControllerStyle(true);//设置乐观锁字段名strategyConfig.setVersionFieldName("version");//设置逻辑删除字段名strategyConfig.setLogicDeleteFieldName("deleted");//设置是否启用LombokstrategyConfig.setEntityLombokModel(true);autoGenerator.setStrategy(strategyConfig);autoGenerator.execute();//执行}
}

猿猿建议前期学习的时候以练习为主,尽量不要使用代码生成器自动生成哦。


http://chatgpt.dhexx.cn/article/t160OS6g.shtml

相关文章

python 代码生成器_Python代码生成器(代码生成工具)V1.1 正式版

Python代码生成器(代码生成工具)是一款很优秀好用的为新手制作的代码生成助手。小编带来的这款Python代码生成器功能强大&#xff0c;操作简单&#xff0c;使用后可以帮助用户更轻松便捷的生成Python代码&#xff0c;非常方便实用。其内置了大量的示例代码&#xff0c;可以帮助…

12款AI代码生成工具,都很能打

1.Anania Anania 是一个机器人数据分析师&#xff0c;可以通过简单、自然的英语对话来分析您的数据。连接数据源并以简单的英语提问&#xff0c;无需任何设置或配置。在幕后&#xff0c;Anania 正在使用一个 AI 系统&#xff0c;该系统将文本转换为 SQL 和 Python 代码并执行您…

3D相册动态桌面制作

3D相册动态桌面制作 1.下载3D相册代码链接&#xff1a;https://pan.baidu.com/s/1Z_br3XKGsW3vsISvSCteJA&#xff0c;提取码&#xff1a;8888 更换自己喜欢的图片 注意第三张和第四章相册右键旋转照片 直接双击运行index.html可以在浏览器中看到效果。 如果不是很喜欢 可以自行…

HTML+CSS+JavaScript七夕情人节表白网页【樱花雨3D相册】超好看

这是程序员表白系列中的100款网站表白之一&#xff0c;旨在让任何人都能使用并创建自己的表白网站给心爱的人看。 此波共有100个表白网站&#xff0c;可以任意修改和使用&#xff0c;很多人会希望向心爱的男孩女孩告白&#xff0c;生性腼腆的人即使那个TA站在眼前都不敢向前表白…

制作简易的3D相册

今天介绍一下3D相册&#xff0c;用到了开源的FeatureCoverFlow控件&#xff0c;之前的几个作品用的也全都是开源的控件&#xff0c;为什么要用开源的控件呢&#xff0c;因为...他稳定啊&#xff01; 1.准备 仍然是&#xff0c;去掉标题栏&#xff0c;然后导库&#xff1a; impl…

HTML5、css3、js实现3D相册

目录 想法 实现 一、基础知识 1.3D转换 transform-style: preserve-3d; ①简述 ②使用 ③3D转换方法 2.onmouseover 事件 ①解释 ②具体语法 3.onmouseout事件 ①解释 ②具体语法 **本例通过在div的class中设置相同的类名&#xff0c;然后在js方法中通过document…

前端CSS3实现3D相册小案例

前端CSS3实现3D相册小案例 HTML代码部分&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>3D相册</title> <link type"text/css" href"css/style.css&qu…

制作一个简单3D相册

- 用到的点&#xff1a; 旋转 2D 旋转 transform: rotate(值deg) deg 角度的单位 3D 旋转 transform:rotateX rotateY roteteZ 如果让一个块实现3D效果&#xff0c;必须做两件事&#xff1a; 1、在要实现3D效果的块上 加transform-style:preserve-3D (声明) 2、在要实现3D效…

html结合css实现浏览器展示3D相册

最近写了一个在浏览器展示3D相册效果&#xff0c;通过html文件结合css实现。 1.html详细代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>3D相册</title> <script src"../js/jquer…

python3d相册源代码_js和CSS3炫酷3D相册展示

js和CSS3炫酷3D相册展示 *{margin:0;padding:0;} body{background:url(img/bg.jpg);width:100%;height:100%;overflow:hidden;}; h1{width:277;height:76px;margin:30px auto 0;} .xc-3D{width:100%;height:300px;background:#fff;margin-top:100px;position:relative;transfor…

three.js 制作3D相册

效果图&#xff1a; 由于博客限制了图片大小&#xff0c;动画质量不太好&#xff0c; 在线效果&#xff1a; https://static-mp-df787464-d77c-4180-83c3-6e7add40073e.next.bspapp.com/ 参考了three.js 官方代码 <!-- 源码下载地址 https://pan.baidu.com/s/1AVB71Aj…

3d相册

页面脚本 我的图片是是本地的&#xff0c;大家可以放上自己喜爱的图片 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>3d相册</title></head><style>#box1 {/* 宽 */width: 300px;/* 高 */height: …

HTML实现3D相册

今天&#xff0c;我给大家分享一个3D相册的代码 废话不说先上效果图&#xff1a; 先新建两个文件夹&#xff0c;一个叫css&#xff0c;另一个叫img&#xff0c;如下图&#xff1a; 先新建一个文本文档&#xff0c;输入下面的代码&#xff1a; <!DOCTYPE html> <html…

教你零基础制作3D旋转相册(送给那个她~)

3D立体相册&#xff1f;   是的&#xff0c;相信大家或多或少的会在一些地方看到某些程序员用代码给自己女朋友写3D立体相册&#xff0c;那么你会不会也想自己手动敲出那些炫酷的代码呢&#xff1f;   那你是找对地方了。废话不多说&#xff0c;今天为大家分享利用html实现…

【3D相册】零基础完成3D相册并配上背景音乐

文章目录 一、前言二、准备工作1、新建文件夹2、准备素材对于图片的处理对于音乐的处理 三、代码工作1、python处理6张图片1.1代码运行1.2 放入背景图片 2、写html文件2.1 更换音乐素材 3、运行main.html 四、推荐阅读 一、前言 帮助好哥们整的一个小相册&#xff0c;给他写个…

斐波那契数列求和公式

斐波那契数列指的是这样一个数列&#xff1a;1、1、2、3、5、8、13、21、……    这个数列从第三项开始&#xff0c;每一项都等于前两项之和。它的通项公式为:(见下图)&#xff08;又叫“比内公式”&#xff0c;是用无理数表示有理数的一个范例。&#xff09; 斐波那契数列求…

斐波那契数列之python(5种方法)

斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、因数学家列昂纳多斐波那契&#xff08;Leonardoda Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为“兔子数列”&#xff0c;指的是这样一个数列&#xff1a;1、1、2、…

斐波那契数列(C/C++)

目录 背景介绍 解法1&#xff1a;非数组非递归 解法2&#xff1a;数组非递归 解法3&#xff1a;非数组递归 解法4&#xff1a;数组递归 背景介绍 斐波那契数列&#xff0c;又称黄金分割数列&#xff0c;指的是这样一个数列&#xff1a;0、1、1、2、3、5、8、13、21、34、…

关于斐波那契数列通项公式证明以及推广

在我们中学的时候老师都会举一个著名的兔子繁殖的例子&#xff1a;一般而言&#xff0c;兔子在出生两个月后&#xff0c;就有繁殖能力&#xff0c;一对兔子每个月能生出一对小兔子来。如果所有兔子都不死&#xff0c;那么一年以后可以繁殖多少对兔子&#xff1f;而这个问题就是…

斐波那契数列的四种解法

题目描述 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;因数学家莱昂纳多斐波那契&#xff08;Leonardo Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为“兔子数列”&#xff0c;指的是这样一个数列&a…