提交 6eeae343 编写于 作者: 沉默王二's avatar 沉默王二 💬

Spring Boot AutoGenerator

Spring Initializr
上级 eec5e2b9
...@@ -278,7 +278,7 @@ ...@@ -278,7 +278,7 @@
- [Spring Boot 整合 MySQL 和 Druid](docs/springboot/mysql-druid.md) - [Spring Boot 整合 MySQL 和 Druid](docs/springboot/mysql-druid.md)
- [Spring Boot 整合 JPA](docs/springboot/jpa.md) - [Spring Boot 整合 JPA](docs/springboot/jpa.md)
- [Spring Boot 整合 Redis 实现缓存](docs/redis/redis-springboot.md) - [Spring Boot 整合 Redis 实现缓存](docs/redis/redis-springboot.md)
- [Spring Boot 整合 MyBatis-Plus AutoGenerator生成项目骨架代码](docs/kaiyuan/auto-generator.md) - [Spring Boot 整合 MyBatis-Plus AutoGenerator 生成编程喵项目骨架代码](docs/kaiyuan/auto-generator.md)
- [Spring Boot 为什么不需要额外安装Tomcat?](docs/springboot/tomcat.md) - [Spring Boot 为什么不需要额外安装Tomcat?](docs/springboot/tomcat.md)
## 辅助工具/轮子 ## 辅助工具/轮子
......
--- ---
title: Spring Boot 整合 MyBatis-Plus AutoGenerator 生成编程喵项目骨架代码
category: category:
- Java企业级开发 - Java企业级开发
tag: tag:
- 辅助工具/轮子 - Spring Boot
--- ---
# MyBatis-Plus AutoGenerator:一款开发效率更高的代码生成工具
作为一名 Java 后端开发,日常工作中免不了要生成数据库表对应的持久化对象 PO,操作数据库的接口 DAO,以及 CRUD 的 XML,也就是 mapper。 作为一名 Java 后端开发,日常工作中免不了要生成数据库表对应的持久化对象 PO,操作数据库的接口 DAO,以及 CRUD 的 XML,也就是 mapper。
Mybatis Generator 是 MyBatis 官方提供的一个代码生成工具,完全可以胜任这个工作,不过最近在开发“编程猫”开源网站的时候试用了一下 MyBatis-Plus 官方提供 AutoGenerator,发现配置更简单,开发效率更高!于是就来给小伙伴们安利一波。 Mybatis Generator 是 MyBatis 官方提供的一个代码生成工具,完全可以胜任这个工作,不过最近在开发“编程喵🐱”开源网站的时候试用了一下 MyBatis-Plus 官方提供 AutoGenerator,发现配置更简单,开发效率更高!于是就来给小伙伴们安利一波。
来个 GIF 感受一下 AutoGenerator 生成代码的快感吧 让我们来通过一个 gif 感受一下 AutoGenerator 的强大
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-1.gif) ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-1.gif)
### 导入 SQL 文件
编程喵项目的 SQL 文件我已经同步到本教程所在的源码当中。
>路径:[https://github.com/itwanger/codingmore-learning/tree/main/codingmore-autogenerator](https://github.com/itwanger/codingmore-learning/tree/main/codingmore-autogenerator)
可以通过 GitHub 桌面版从 GitHub 上下载本教程专属的项目 codingmore-autogenerator 到本地,SQL 文件的位置参照下图。
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-47997c23-cb65-4801-954c-0ec611b764ad.png)
编程喵使用的 MySQL 版本是 8.0,可以在链接上 MySQL 后使用 `select version();` 命令查询版本。
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-ea5bbe50-ba28-4056-a81f-a68651a58391.png)
打开 Navicat,把 SQL 文件导入到本地数据库,
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-d523792f-2d55-4485-b64d-b4763ecd7b77.png)
关闭链接,重新打开就可以看到导入后的数据库 codingmore,里面一共 27 张表。
### 一、使用 Mybatis Generator ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-3cda9cb7-dda5-4aca-9cea-cc400768b921.png)
### 先体验 Mybatis Generator
为了形成鲜明的对比,我们先来使用 Mybatis Generator 生成一次代码,感受一下整个过程。
第一步,在 pom.xml 文件中添加 MySQL+MyBatis 的依赖(Mybatis Generator 的前置条件)。 第一步,在 pom.xml 文件中添加 MySQL+MyBatis 的依赖(Mybatis Generator 的前置条件)。
``` ```
<!-- MySQL 连接池 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--MyBatis 的 Spring Boot starter -->
<dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> <artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version> <version>2.2.2</version>
</dependency> </dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
``` ```
添加完成后,一定要执行一次 Maven 重载(见下图),确保 MyBatis 的依赖加载完毕后再执行第二步。 添加完成后,一定要执行一次 Maven 重载(见下图),确保 MyBatis 的依赖加载完毕后再执行第二步。
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-2.png) ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-b9dc31ee-32f4-4556-b2e8-b0ed114ec81a.png)
否则下一步可能不通过,但又得不到任何错误提示。不要问我为什么,踩过坑后痛苦的领悟。 否则下一步可能不通过,但又得不到任何错误提示。不要问我为什么,踩过坑后痛苦的领悟。
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-3.png) ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-3.png)
添加完成后,可以通过 Maven 插件来生成代码,也可以通过 Java 代码来生成代码,这里以 Maven 插件的形式来演示。Java 代码的形式可参照 Mybatis Generator: 添加完成后,可以通过 Maven 插件来生成骨架代码,也可以通过 Java 代码来生成骨架代码,这里以 Maven 插件的形式来演示。Java 代码的形式可参照 Mybatis Generator:
>https://mybatis.org/generator/running/runningWithJava.html
第二步,在 pom.xml 的 MyBatis Generator 插件,先来看一下整体的结构图,注意是在 build→plugins 下节点下添加。 >[https://mybatis.org/generator/running/runningWithJava.html](https://mybatis.org/generator/running/runningWithJava.html)
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-4.png) 第二步,在 pom.xml 文件中,添加 MyBatis Generator 插件,注意是在 **build→plugins** 下节点下添加。
首先是 MyBatis Generator 插件,目前最新版是 1.4.0,我们采用上一个稳定版本 1.3.7,稳一点。
``` ```
<groupId>org.mybatis.generator</groupId> <!-- MyBatis Generator 插件 -->
<artifactId>mybatis-generator-maven-plugin</artifactId> <plugin>
<version>1.3.7</version> <groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!-- MyBatis Generator 生成器的配置文件-->
<configurationFile>src/main/resources/mybatis-generator-config.xml</configurationFile>
<!-- 允许覆盖生成的文件,确定骨架代码后就可以设为 false 了,免得覆盖原有代码 -->
<overwrite>true</overwrite>
<!-- 将当前 pom 的依赖项添加到生成器的类路径中-->
<includeCompileDependencies>true</includeCompileDependencies>
</configuration>
</plugin>
``` ```
MyBatis Generator 插件目前最新版是 1.4.0,我们采用上一个稳定版本 1.3.7,新版本容易有坑。
来看一下添加 MyBatis Generator 插件后 pom.xml 文件的结构图。
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-136e3eec-04ce-478b-aa7d-3d5913466f70.png)
只添加插件还不够,还需要对其进行配置,我们使用 configurationFile 元素来指定一个配置文件 mybatis-generator-config.xml: 只添加插件还不够,还需要对其进行配置,我们使用 configurationFile 元素来指定一个配置文件 mybatis-generator-config.xml:
``` ```
<configurationFile>src/main/resources/mybatis-generator-config.xml</configurationFile> <configurationFile>src/main/resources/mybatis-generator-config.xml</configurationFile>
``` ```
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-5.png) 由于数据库表可能会发生变动,因此我们需要追加一个配置 `<overwrite>true</overwrite>`,允许覆盖旧的文件。为了防止我们编写的 SQL 语句被覆盖掉,MyBatis Generator 只会覆盖旧的 po、dao、而 *mapper.xml 不会覆盖,而是追加。
Mybatis Generator 需要连接数据库,所以还需要在 plugin 节点中添加数据库驱动依赖,就像这样:
```
<configuration>
</configuration>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
```
但我们在 pom.xml 文件中已经添加过 MySQL 的链接驱动了,这里再添加就会显得很多余。好在 Maven 为我们提供了 includeCompileDependencies 属性,可以让我们在插件中引用之前添加的依赖。
```
<includeCompileDependencies>true</includeCompileDependencies>
```
来看一下 mybatis-generator-config.xml 的位置。
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-499b434d-4ae8-45c3-bfeb-9f5b4710b81e.png)
来看一下 mybatis-generator-config.xml 的内容。 来看一下 mybatis-generator-config.xml 的内容。
...@@ -85,34 +141,43 @@ Mybatis Generator 是 MyBatis 官方提供的一个代码生成工具,完全 ...@@ -85,34 +141,43 @@ Mybatis Generator 是 MyBatis 官方提供的一个代码生成工具,完全
<!-- jdbc连接 --> <!-- jdbc连接 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://ip:3306/codingmoretiny02?useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai&amp;useSSL=false" connectionURL="jdbc:mysql://localhost:3306/codingmore?useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai&amp;useSSL=false"
userId="codingmoretiny02" userId="root"
password="123456"> password="Huicheng123">
<!--高版本的 mysql-connector-java 需要设置 nullCatalogMeansCurrent=true--> <!--高版本的 mysql-connector-java 需要设置 nullCatalogMeansCurrent=true-->
<property name="nullCatalogMeansCurrent" value="true"/> <property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection> </jdbcConnection>
<!-- 类型转换 --> <!-- 类型转换 -->
<javaTypeResolver> <javaTypeResolver>
<!--是否使用bigDecimal,默认false。
false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer
true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal-->
<property name="forceBigDecimals" value="true"/> <property name="forceBigDecimals" value="true"/>
</javaTypeResolver> </javaTypeResolver>
<!-- 生成实体类地址 --> <!-- 生成实体类地址 -->
<javaModelGenerator targetPackage="com.codingmore.mbg.po" targetProject="src/main/java"> <javaModelGenerator targetPackage="top.codingmore.mbg.po" targetProject="src/main/java">
<!-- 是否针对string类型的字段在set方法中进行修剪,默认false --> <!-- 是否针对string类型的字段在set方法中进行修剪,默认false -->
<property name="trimStrings" value="true"/> <property name="trimStrings" value="true"/>
</javaModelGenerator> </javaModelGenerator>
<!-- 生成Mapper.xml文件 --> <!-- 生成Mapper.xml文件 -->
<sqlMapGenerator targetPackage="com.codingmore.mbg.mapper" targetProject="src/main/resources"> <sqlMapGenerator targetPackage="top.codingmore.mbg.mapper" targetProject="src/main/resources">
</sqlMapGenerator> </sqlMapGenerator>
<!-- 生成 XxxMapper.java 接口--> <!-- 生成 XxxMapper.java 接口-->
<javaClientGenerator targetPackage="com.codingmore.mbg.dao" targetProject="src/main/java" type="XMLMAPPER"> <javaClientGenerator targetPackage="top.codingmore.mbg.dao" targetProject="src/main/java" type="XMLMAPPER">
</javaClientGenerator> </javaClientGenerator>
<table schema="" tableName="user" domainObjectName="User"
<!-- schema为数据库名,oracle需要配置,mysql不需要配置。
tableName为对应的数据库表名
domainObjectName 是要生成的实体类名(可以不指定,默认按帕斯卡命名法将表名转换成类名)
enableXXXByExample 默认为 true, 为 true 会生成一个对应Example帮助类,帮助你进行条件查询,不想要可以设为false
-->
<table schema="" tableName="posts" domainObjectName="Posts"
enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
enableUpdateByExample="false" selectByExampleQueryId="false"> enableUpdateByExample="false" selectByExampleQueryId="false">
</table> </table>
...@@ -131,51 +196,23 @@ Mybatis Generator 是 MyBatis 官方提供的一个代码生成工具,完全 ...@@ -131,51 +196,23 @@ Mybatis Generator 是 MyBatis 官方提供的一个代码生成工具,完全
更多配置信息可以参照下面这篇文章: 更多配置信息可以参照下面这篇文章:
>https://juejin.cn/post/6844903982582743048 >[https://juejin.cn/post/6844903982582743048](https://juejin.cn/post/6844903982582743048)
由于数据库表可能会发生变动,因此我们需要追加一个配置 `<overwrite>true</overwrite>`,允许覆盖旧的文件。为了防止我们编写的 SQL 语句被覆盖掉,MyBatis Generator 只会覆盖旧的 po、dao、而 *mapper.xml 不会覆盖,而是追加。
Mybatis Generator 需要链接数据库,所以还需要添加数据库驱动依赖,就像这样:
``` 到此为止,mybatis-generator-maven-plugin 就算是配置完成了,完整内容如下图所示:
<configuration>
</configuration>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
```
这样就会显得比较冗余,因为我们之前添加过了。好在 Maven 提供了 includeCompileDependencies 属性,可以让我们在插件中引用之前添加的依赖。
``` ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-c09c7dcd-ab4e-437b-a512-a9e0bf1f533c.png)
<includeCompileDependencies>true</includeCompileDependencies>
```
到此为止,mybatis-generator-maven-plugin 就算是配置完成了,完整内容如下所示:
```
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<configurationFile>src/main/resources/mybatis-generator-config.xml</configurationFile>
<overwrite>true</overwrite><includeCompileDependencies>true</includeCompileDependencies>
</configuration>
</plugin>
</plugins>
</build>
```
配置完成后可以双击运行 Maven 的插件 Mybatis Generator,没有问题的话,可以看到生成后的文件。 配置完成后可以双击运行 Maven 的插件 Mybatis Generator,没有问题的话,可以看到生成后的文件。
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-6.png)
### 二、使用 MyBatis-Plus 的 AutoGenerator ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-843487f6-5823-4291-b6c3-b4f69b9bba51.png)
### 再体验 MyBatis-Plus 的 AutoGenerator
MyBatis-Plus(简写 MP)是 MyBatis 的增强工具,官方宣称 MP 和 MyBatis 的关系就好像魂斗罗中的 1P 和 2P,可谓好基友,天下走。 MyBatis-Plus(简写 MP)是 MyBatis 的增强工具,官方宣称 MP 和 MyBatis 的关系就好像魂斗罗中的 1P 和 2P,可谓好基友,天下走。
...@@ -195,7 +232,7 @@ AutoGenerator 是 MyBatis-Plus 推出的代码生成器,可以快速生成 Ent ...@@ -195,7 +232,7 @@ AutoGenerator 是 MyBatis-Plus 推出的代码生成器,可以快速生成 Ent
</dependency> </dependency>
``` ```
第二步,添加模板引擎依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,这里使用默认的 Velocity 引擎。 第二步,添加模板引擎依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,这里使用 Velocity 引擎。
``` ```
<dependency> <dependency>
...@@ -205,7 +242,28 @@ AutoGenerator 是 MyBatis-Plus 推出的代码生成器,可以快速生成 Ent ...@@ -205,7 +242,28 @@ AutoGenerator 是 MyBatis-Plus 推出的代码生成器,可以快速生成 Ent
</dependency> </dependency>
``` ```
第三步,进行全局配置。 第三步,新建 CodeGenerator.java 文件,在 main 方法中添加 MyBatis-Plus 的 AutoGenerator 对象。
```java
package top.codingmore.generator;
import com.baomidou.mybatisplus.generator.AutoGenerator;
/**
* 微信搜索「沉默王二」,回复 Java
*
* @author 沉默王二
* @date 5/17/22
*/
public class CodeGenerator {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
}
}
```
在 main 方法中添加全局配置。
```java ```java
// 全局配置 // 全局配置
...@@ -217,17 +275,24 @@ gc.setOpen(false); ...@@ -217,17 +275,24 @@ gc.setOpen(false);
gc.setDateType(DateType.ONLY_DATE); gc.setDateType(DateType.ONLY_DATE);
gc.setSwagger2(true); gc.setSwagger2(true);
gc.setIdType(IdType.AUTO); gc.setIdType(IdType.AUTO);
gc.setBaseColumnList(true);
gc.setBaseResultMap(true);
gc.setFileOverride(true);
mpg.setGlobalConfig(gc);
``` ```
第四步,配置数据源。 配置数据源。
```java ```java
// 数据源配置 // 数据源配置
DataSourceConfig dsc = new DataSourceConfig(); DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://ip:3306/codingmoretiny02?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai"); dsc.setUrl("jdbc:mysql://localhost:3306/codingmore?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai");
dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("codingmoretiny02"); dsc.setUsername("root");
dsc.setPassword("123456"); dsc.setPassword("123456");
mpg.setDataSource(dsc);
``` ```
第五步,配置包。 第五步,配置包。
...@@ -240,25 +305,60 @@ pc.setParent("top.codingmore.mpg"); ...@@ -240,25 +305,60 @@ pc.setParent("top.codingmore.mpg");
更多配置项可以到官方查看: 更多配置项可以到官方查看:
>https://baomidou.com/pages/061573/ >[https://baomidou.com/pages/061573/](https://baomidou.com/pages/061573/)
示例代码示例如下所示: 完整代码如下所示:
``` ```java
package top.codingmore.generator;
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.rules.DateType;
/**
* 微信搜索「沉默王二」,回复 Java
*
* @author 沉默王二
* @date 5/17/22
*/
public class CodeGenerator { public class CodeGenerator {
public static void main(String[] args) { public static void main(String[] args) {
// 代码生成器 // 代码生成器
AutoGenerator mpg = new AutoGenerator(); AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig(); GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir"); String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java"); gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("沉默王二"); gc.setAuthor("沉默王二");
gc.setOpen(false);
gc.setDateType(DateType.ONLY_DATE);
gc.setSwagger2(true);
gc.setIdType(IdType.AUTO);
gc.setBaseColumnList(true);
gc.setBaseResultMap(true);
gc.setFileOverride(true);
mpg.setGlobalConfig(gc); mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig(); DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/codingmore?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai");
dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("Huicheng123");
mpg.setDataSource(dsc); mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("top.codingmore.mpg");
mpg.setPackageInfo(pc);
mpg.execute(); mpg.execute();
} }
} }
...@@ -268,7 +368,7 @@ public class CodeGenerator { ...@@ -268,7 +368,7 @@ public class CodeGenerator {
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-1.gif) ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-1.gif)
### 三、总结对比 ### 总结对比
对比 Mybatis 的 Generator 和 MyBatis-Plus 的 AutoGenerator,就可以得出这样一条结论:后者的配置更简单,开发效率也更高,功能也更强大——可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码。 对比 Mybatis 的 Generator 和 MyBatis-Plus 的 AutoGenerator,就可以得出这样一条结论:后者的配置更简单,开发效率也更高,功能也更强大——可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码。
...@@ -276,9 +376,10 @@ public class CodeGenerator { ...@@ -276,9 +376,10 @@ public class CodeGenerator {
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-9.png) ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/kaiyuan/auto-generator-9.png)
想要完整示例的话,可以到 GitHub 上查看 ### 源码地址
>https://github.com/itwanger/codingmore-learning/tree/main/codingmore-tiny-02 >- 编程喵:[https://github.com/itwanger/coding-more](https://github.com/itwanger/coding-more)
>- codingmore-autogenerator:[https://github.com/itwanger/codingmore-learning](https://github.com/itwanger/codingmore-learning/tree/main/codingmore-autogenerator)
------ ------
......
...@@ -7,7 +7,7 @@ title: 搭建第一个Spring Boot项目 ...@@ -7,7 +7,7 @@ title: 搭建第一个Spring Boot项目
--- ---
### 01、关于 Spring Initializr ### 关于 Spring Initializr
Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目。网址如下: Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目。网址如下:
...@@ -22,7 +22,7 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目 ...@@ -22,7 +22,7 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目
来解释一下 Spring Initializr 初始化界面中的关键选项。 来解释一下 Spring Initializr 初始化界面中的关键选项。
1)Project:项目的构建方式,可以选择 [Maven](https://tobebetterjavaer.com/maven/maven.html)Maven 的安装可以戳链接参考) 和 Gradle(构建脚本基于 Groovy 或者 Kotlin 等语言来编写,而不是传统的 XML)。默认 Maven 即可 1)Project:项目的构建方式,可以选择 [Maven](https://tobebetterjavaer.com/maven/maven.html)安装方式可以戳链接) 和 Gradle(构建脚本基于 Groovy 或者 Kotlin 等语言来编写,而不是传统的 XML)。编程喵默认采用的 Maven
2)Language:项目的开发语言,可以选择 Java、Kotlin(JetBrains开发的可以在 JVM 上运行的编程语言)、Groovy(可以作为 Java 平台的脚本语言来使用)。默认 Java 即可。 2)Language:项目的开发语言,可以选择 Java、Kotlin(JetBrains开发的可以在 JVM 上运行的编程语言)、Groovy(可以作为 Java 平台的脚本语言来使用)。默认 Java 即可。
...@@ -30,13 +30,13 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目 ...@@ -30,13 +30,13 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目
4)Project Metada:项目的基础设置,包括包名、打包方式、JDK 版本等。 4)Project Metada:项目的基础设置,包括包名、打包方式、JDK 版本等。
- Group:项目所属组织的标识符,比如说 vip.r2java - Group:项目所属组织的标识符,比如说 top.codingmore
- Artifact:项目的标识符,比如说 tobebetterjavaer - Artifact:项目的标识符,比如说 coding-more
- Name:默认保持和 Artifact 一致即可; - Name:默认保持和 Artifact 一致即可;
- Description: 项目的描述信息,比如说《Java 程序员进阶之路》; - Description: 项目的描述信息,比如说《编程喵实战项目(Spring Boot+Vue 前后端分离项目)》;
- Package name:项目包名,根据Group和Artifact自动生成即可。 - Package name:项目包名,根据Group和Artifact自动生成即可。
- Packaging: 项目打包方式,可以选择 Jar 和 War(SSM 时代,JavaWeb 项目通常会打成 War 包,放在 Tomcat 下),Spring Boot 时代默认 Jar 包即可,因为 Spring Boot 可以内置 Tomcat、Jetty、Undertow 等服务容器了。 - Packaging: 项目打包方式,可以选择 Jar 和 War(SSM 时代,JavaWeb 项目通常会打成 War 包,放在 Tomcat 下),Spring Boot 时代默认 Jar 包即可,因为 Spring Boot 可以内置 Tomcat、Jetty、Undertow 等服务容器了。
- Java:项目选用的 JDK 版本,选择 11 或者 8 就行。 - Java:项目选用的 JDK 版本,选择 11 或者 8 就行(编程喵采用的是最最最最稳定的 Java8)
5)Dependencies:项目所需要的依赖和 starter。如果不选择的话,默认只有核心模块 spring-boot-starter 和测试模块 spring-boot-starter-test。 5)Dependencies:项目所需要的依赖和 starter。如果不选择的话,默认只有核心模块 spring-boot-starter 和测试模块 spring-boot-starter-test。
...@@ -51,8 +51,14 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目 ...@@ -51,8 +51,14 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/initializr-03.png) ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/initializr-03.png)
如果使用的是 Intellij IDEA 旗舰版,可以直接通过 Intellij IDEA 新建 Spring Boot 项目。
### 02、Spring Boot 项目结构分析
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/initializr-2d03d0a4-0e87-4cd3-974d-f35bc440bdf0.png)
### Spring Boot 项目结构分析
解开压缩包,并导入到 Intellij IDEA 中,可以看到 Spring Boot 项目的目录结构。 解开压缩包,并导入到 Intellij IDEA 中,可以看到 Spring Boot 项目的目录结构。
...@@ -71,7 +77,7 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目 ...@@ -71,7 +77,7 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目
- src/test/java 为测试类文件目录。 - src/test/java 为测试类文件目录。
- pom.xml 用来管理项目的依赖和构建。 - pom.xml 用来管理项目的依赖和构建。
### 03、如何启动/部署 Spring Boot 项目 ### 如何启动/部署 Spring Boot 项目
第一次启动,我个人习惯在 main 类中右键,在弹出的右键菜单这种选择「run ... main()」启动。 第一次启动,我个人习惯在 main 类中右键,在弹出的右键菜单这种选择「run ... main()」启动。
...@@ -97,12 +103,12 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目 ...@@ -97,12 +103,12 @@ Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目
``` ```
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
``` ```
...@@ -132,7 +138,7 @@ PS:需要在 centos 环境下安装 JDK 的小伙伴可以看这篇。 ...@@ -132,7 +138,7 @@ PS:需要在 centos 环境下安装 JDK 的小伙伴可以看这篇。
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/initializr-12.png) ![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/springboot/initializr-12.png)
### 04、开发第一个Web项目 ### 第一个Web项目
项目既然启动成功了,我们在浏览器里访问 8080 端口测试下吧。 项目既然启动成功了,我们在浏览器里访问 8080 端口测试下吧。
...@@ -164,6 +170,11 @@ public class HelloController { ...@@ -164,6 +170,11 @@ public class HelloController {
OK,现在可以访问到了。也就表明我们的第一个 Spring Boot 项目开发完成了。 OK,现在可以访问到了。也就表明我们的第一个 Spring Boot 项目开发完成了。
### 源码路径
>- 编程喵:[https://github.com/itwanger/coding-more](https://github.com/itwanger/coding-more)
>- helloworld:[https://github.com/itwanger/codingmore-learning](https://github.com/itwanger/codingmore-learning/tree/main/codingmore-helloword)
--- ---
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册