上一节咱们学习了mybatis-plus
的ActiveRecord(活动记录)
,这一节咱们来学习一下mybatis-plus
的代码生成器
。java
Mybatis-Plus 的代码生成器为咱们提供了大量的自定义设置,生成的代码彻底可以知足各种型的需求,能够快速的生成代码,简化开发,提升开发效率。mysql
Mybatis-Plus 的代码生成器 和 Mybatis MBG 代码生成器的对比:git
Mybatis-Plus 代码生成器 | Mybatis MBG |
---|---|
Mybatis-Plus 的代码生成器都是基于 java 代码来生成 | MBG 基于 xml 文件进行代码生成 |
Mybatis-Plus 的代码生成器可生成: 实体类(能够选择是否支持 AR) 、 Mapper 接口 、 Mapper 映射文件 、 Service 层 、 Controller 层 |
MyBatis 的代码生成器可生成: 实体类 、 Mapper 接口 、 Mapper 映射文件 |
话很少说,下面咱们来开始咱们的代码生成器的学习之旅。github
首先按照快速开始——Spring集成Mybatis-Plus
一节的操做,新建一个mp05
的 Module
,能够将mp02
中的resources
文件夹中内容所有复制过来,由于这些配置文件都是同样的。web
在开始mp05
的实战以前,咱们须要修改下父工程的pom文件,由于MP 的代码生成器默认使用的是 Apache 的 Velocity
模板,须要加入 Apache Velocity
的依赖。固然也能够更换为别的模板技术,例如freemarker
,此处不作过多的介绍,你们感兴趣的能够本身尝试。另外还须要引入 mybatis-plus-generator
的依赖,这时由于 MyBatis-Plus 从 3.0.3 以后移除了代码生成器与模板引擎的默认依赖,须要手动添加相关依赖。除此以外还须要引入spring-webmvc
的依赖,由于咱们在用代码生成器生成的 controller
层的时候,SpringMVC
的注解会提示报错,固然,你也能够在生成完代码以后再根据须要引入SpringMVC
的依赖也能够,这样并不会影响代码生成器的使用。spring
咱们须要修改的 pom.xml
文件位置以下图所示:sql
贴上pom.xml修改部分的代码方便复制粘贴:数据库
<!-- 下面的依赖针对于 mp05 模块-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--注意: MyBatis-Plus 从 3.0.3 以后移除了代码生成器与模板引擎的默认依赖,须要手动添加相关依赖: -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!--模板引擎
MP 的代码生成器默认使用的是 Apache 的 Velocity 模板,固然也能够更换为别的模板
技术,例如 freemarker。此处不作过多的介绍。
须要加入 Apache Velocity 的依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
<!--加入 slf4j ,查看日志输出信息-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
复制代码
修改后完整的 pom.xml
文件以下:apache
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo.mybatis-plus</groupId>
<artifactId>mybatis-plus-in-action</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>mp01</module>
<module>mp02</module>
<module>mp03</module>
<module>mp04</module>
<module>mp05</module>
<module>mp06</module>
<module>mp07</module>
<module>mp08</module>
</modules>
<!-- 统一管理项目依赖版本 -->
<properties>
<mybatis.plus.version>3.2.0</mybatis.plus.version>
<!--<mybatis.plus.version>2.3</mybatis.plus.version>-->
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<druid.version>1.1.20</druid.version>
<mysql.version>5.1.48</mysql.version>
<spring.version>5.2.0.RELEASE</spring.version>
<lombok.version>1.18.10</lombok.version>
<slf4j.version>1.7.28</slf4j.version>
<velocity.version>2.1</velocity.version>
</properties>
<dependencies>
<!-- mp 依赖
mybatis-plus 会自动维护mybatis 以及 mybatis-spring相关的依赖
Mybatis 及 Mybatis-Spring 依赖请勿加入项目配置,以避免引发版本冲突!!!Mybatis-Plus 会自动帮你维护!
-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!--junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!--lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<!-- 下面的依赖针对于 mp05 模块-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--注意: MyBatis-Plus 从 3.0.3 以后移除了代码生成器与模板引擎的默认依赖,须要手动添加相关依赖: -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!--模板引擎
MP 的代码生成器默认使用的是 Apache 的 Velocity 模板,固然也能够更换为别的模板
技术,例如 freemarker。此处不作过多的介绍。
须要加入 Apache Velocity 的依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
<!--加入 slf4j ,查看日志输出信息-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
</dependencies>
<!-- 设置JDK编译版本 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
复制代码
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mybatis-plus-in-action</artifactId>
<groupId>com.demo.mybatis-plus</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mp05</artifactId>
<dependencies>
<!-- mp 依赖
mybatis-plus 会自动维护mybatis 以及 mybatis-spring相关的依赖
Mybatis 及 Mybatis-Spring 依赖请勿加入项目配置,以避免引发版本冲突!!!Mybatis-Plus 会自动帮你维护!
-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!--junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!--lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--注意: MyBatis-Plus 从 3.0.3 以后移除了代码生成器与模板引擎的默认依赖,须要手动添加相关依赖: -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!--模板引擎
MP 的代码生成器默认使用的是 Apache 的 Velocity 模板,固然也能够更换为别的模板
技术,例如 freemarker。此处不作过多的介绍。
须要加入 Apache Velocity 的依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
<!--加入 slf4j ,查看日志输出信息-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
</dependencies>
</project>
复制代码
咱们在 mp05\src\test\java\com\mp\test\
路径下新建一个测试类 TestMp.java
api
TestMp.java
的代码以下:
public class TestMp {
private ApplicationContext ioc = new
ClassPathXmlApplicationContext("applicationContext.xml");
/**
* 代码生成器 示例代码
*/
@Test
public void testGenerator() {
// 一、全局配置
com.baomidou.mybatisplus.generator.config.GlobalConfig config = new com.baomidou.mybatisplus.generator.config.GlobalConfig();
config.setActiveRecord(true) // 是否支持AR模式
.setAuthor("jianshu") // 做者
.setOutputDir("E:\\myCode\\mybatis-plus-in-action\\mp05\\src\\main\\java") // 生成路径
.setFileOverride(true) // 文件覆盖
.setIdType(IdType.AUTO) // 主键策略
.setServiceName("%sService") //设置生成的service接口名首字母是否为I,默认是以I开头
.setBaseColumnList(true) // 基本列
.setBaseResultMap(true); // 返回结果map
// 二、数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL) // 设置数据库类型
.setDriverName("com.mysql.jdbc.Driver")
.setUrl("jdbc:mysql://172.19.8.51:3306/wmcTradeOrderDevTemp?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8")
.setUsername("root")
.setPassword("root");
// 三、策略配置
StrategyConfig stConfig = new StrategyConfig();
stConfig.setCapitalMode(true) // 全局大写命名
// .setColumnNaming(NamingStrategy.underline_to_camel) //表名 字段名 是否使用下滑线命名
.setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
.setInclude("tbl_employee") //生成的表
.setTablePrefix("tbl_"); // 表前缀
// 四、包名策略配置
PackageConfig pkConfig = new PackageConfig();
pkConfig.setParent("com.mp")
.setController("controller")
.setEntity("beans")
.setMapper("mapper")
.setService("service")
.setXml("mapper");
// 五、整合配置
AutoGenerator ag = new
AutoGenerator().setGlobalConfig(config)
.setDataSource(dataSourceConfig)
.setStrategy(stConfig)
.setPackageInfo(pkConfig);
// 六、执行
ag.execute();
}
}
复制代码
执行 testGenerator()
方法后,刷新一下项目,咱们能够看到会自动生成 beans
、mapper
、service
、controller
的代码。
注意
:关于表及字段命名策略选择:在 Mybatis-Plus 中,咱们建议数据库表名 和 表字段名采用驼峰命名方式, 若是采用下划线命名方式 请开启全局下划线开关,若是表名字段名命名方式不一致请使用对应的注解指定,咱们建议最好保持一致。这么作的缘由是为了不在对应实体类时产生的性能损耗,这样字段不用作映射就能直接和实体类对应。固然若是项目里不用考虑这点性能损耗,那么你采用下滑线也是没问题的,只须要在生成代码时配置 ColumnNaming属性就能够。
完成上面的操做后,mp05的代码结构以下所示:
至此,基于 mybatis-plus
的代码生成器——逆行工程
演示就完成了,下面咱们就能够进入到下一节插件扩展
的学习了。
相关示例完整代码:mybatis-plus-in-action