简介
在学习公司项目时看到公司有使用Mybatis-Generator
,所以学习了一下
之前是有见识过Mybatis-Plus
的generator
,使用起来还是很棒的,再说了Mybatis-Plus
不也是基于Mybatis
做的吗,所以相信他们会很相似
再有就是学习项目时用过renren-generator,他能生成项目中简单的业务代码,包括controller、service等等
内容
关于Mybatis-Generator
最好还是去官网学习,http://mybatis.org/generator/index.html
当然有些博客写的也很棒,https://www.cnblogs.com/throwable/p/12046848.html
关于上面的那篇博客我只纠正一点,就是关于commentGenerator标签
这块suppressAllComments
,默认值是false
没错,但是false
含义是生成注释,设置为true
才表示不生成注解。
代码
下面是我的一些代码,可以参考一下
主要是pom.xml
、generatorConfig.xml
、generatorConfig.properties
pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
| <?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.wnh</groupId> <artifactId>mybatis-generator</artifactId> <version>1.0-SNAPSHOT</version>
<properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <spring.boot.version>2.2.2.RELEASE</spring.boot.version> <mysql.driver.version>8.0.17</mysql.driver.version> <mybatis.generator.version>1.4.0</mybatis.generator.version> <lombok.version>1.18.12</lombok.version> </properties>
<dependencies>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency>
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.driver.version}</version> </dependency>
<dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>${mybatis.generator.version}</version> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${spring.boot.version}</version> <scope>test</scope> </dependency>
</dependencies>
<build>
<plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>${mybatis.generator.version}</version> <executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration>
<configurationFile>${basedir}/src/main/resources/mybatis/generatorConfig.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite>
</configuration>
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.driver.version}</version> </dependency>
</dependencies> </plugin>
</plugins>
</build>
</project>
|
generatorConfig.properties
1 2 3 4
| datasource.driver=com.mysql.cj.jdbc.Driver datasource.url=jdbc:mysql://localhost:3306/operation?useSSL=false datasource.username=root datasource.password=root
|
generatorConfig.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration> <properties resource="mybatis/generatorConfig.properties"/>
<context id="MySQL" targetRuntime="MyBatis3Simple">
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<commentGenerator> <property name="suppressAllComments" value="true"/> <property name="addRemarkComments" value="true"/> </commentGenerator>
<jdbcConnection driverClass="${datasource.driver}" connectionURL="${datasource.url}" userId="${datasource.username}" password="${datasource.password}"> </jdbcConnection>
<javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver>
<javaModelGenerator targetPackage="com.wnh.pojo.model" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaModelGenerator>
<sqlMapGenerator targetPackage="mybatis/mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator>
<javaClientGenerator targetPackage="com.wnh.mapper" targetProject="src/main/java" type="XMLMAPPER"> <property name="enableSubPackages" value="true"/> </javaClientGenerator>
<table tableName="user" domainObjectName="user.User" mapperName="user.UserMapper" enableCountByExample="false" enableSelectByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"> <generatedKey column="id" sqlStatement="JDBC" identity="true"/> </table>
</context> </generatorConfiguration>
|
注意事项
- 虽然有
Java
和maven
两种启动方式,但我还是推荐maven
- 关于
pom
,要在plugin
中引入需要的依赖,上面也提到了可以配置插件帮助我们生成代码,但官方提供的插件都太基础了,不太实用
- 关于
generatorConfig.xml
,这里context
标签里的要严格按照顺序配置,否则报错
- 一定注意上面的覆盖
xml
的plugin
配置,不然在覆盖生成时会有问题
吐槽
- 首先就是关于注释的,
Mybatis-Generator
生成注释配置下,会生成很多多余的注解,其主要就是关于声明这里的代码是我们Mybatis-Generator
生成的,但真的没什么用啊。有人就问了,“你不会把它关掉吗?”我要不是为了生成实体类对应数据库的注释我也不会开
- 关于生成表这块,难道没有直接配置多个表的选项吗?非得对应数据库每个表写一个
table
标签吗?
- 还有就是在生成文件时,它不会自己确定父包,也就是还得配置每个文件的父包,很麻烦
总结
说实话Mybatis-Generator
确实能帮助我们简化开发,生成数据库实体类、mapper
接口和xml
,但是确实也存在一些问题,这也可能是因为它不更新了吧,上maven
仓库就可以看到最新版本就是1.4.0
,停留在2019年,现在确实也存在很多能替代它的方案。