目录
一、GeneratorConfig.xml配置文件:(解释见注释)
先附上官网链接:http://mybatis.org/generator/index.html
小编根据开发经验,将GeneratorConfig.xml 文件整理了一下(绝对处女座),格式整洁明了,注释清晰易懂,并且把IDEA使用的方法,和可能遇到的问题都一一罗列了下,希望可以真正的帮到你。
一、GeneratorConfig.xml配置文件:(解释见注释)
Mybatis Generator 的配置远不止下面我列出的这些,而下面文件中列举标签,都是我工作中经常使用的,涵盖的很全了,非常基础,但是却很重要。如果遇到特殊需求,请跳转到官网,查看文档说明,连接见微博第一行。
<?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>
<!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包 -->
<classPathEntry location="D:\maven-warehouse\repository\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar"/>
<!-- <classPathEntry location="D:\maven-warehouse\repository\mysql\mysql-connector-java\8.0.17\mysql-connector-java-8.0.17.jar"/> -->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 实体类生成序列化属性-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<!-- 实体类重写HashCode()和equals()-->
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />
<!-- 实体类重写toString() -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
<commentGenerator>
<!-- 是否去除自动生成的注释 -->
<property name="suppressAllComments" value="true"/>
<!-- 生成注释是否带时间戳-->
<property name="suppressDate" value="true"/>
<!-- 生成的Java文件的编码格式 -->
<property name="javaFileEncoding" value="utf-8"/>
<!-- 格式化java代码-->
<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter" />
<!-- 格式化XML代码-->
<property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter" />
</commentGenerator>
<!-- 数据库连接驱动类,URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/dbName?useUnicode=true&characterEncoding=UTF-8"
userId="root" password="root">
</jdbcConnection>
<!-- java类型处理器:处理DB中的类型到Java中的类型 -->
<javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
<!-- 是否有效识别DB中的BigDecimal类型 -->
<property name="forceBigDecimals" value="true"/>
</javaTypeResolver>
<!-- 生成Domain模型:包名(targetPackage)、位置(targetProject) -->
<javaModelGenerator targetPackage="com.project.business.domain" targetProject="D:/workSpace/project/src/main/java">
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true"/>
<!-- 设置是否在getter方法中,对String类型字段调用trim()方法-->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成xml映射文件:包名(targetPackage)、位置(targetProject) -->
<sqlMapGenerator targetPackage="com.project.business.dao" targetProject="D:/workSpace/project/src/main/java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO接口:包名(targetPackage)、位置(targetProject) -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.project.business.dao" targetProject="D:/workSpace/project/src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表:tableName - 数据库中的表名或视图名,domainObjectName - 实体类名 -->
<table tableName="tableName" domainObjectName="tableNameDO"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
(一)、模板的使用方法:
模板支持直接复制使用,前提是:一定要记得修改数据库驱动位置和jdbc.Driver信息。
- 数据库驱动位置:项目加载的本地Maven库中mysql-connector-java-5.1.47.jar的存放位置;
- jdbc.Draver:项目使用的本地数据库地址,以及账号、密码;
- 每次只能对一张表进行操作,所以需要修改要生成的表明名,实体名;
(二)、对两个标签重点解释下:
1 . <plugin > 标签:决定生成的实体类是否包含 - 序列化属性,HashCode(),equals(),toString()方法。
使用该配置文件中生成的方法,因为使用StringBuilder类方法的缘故,其性能比IDEA自动生成的方法还要好。
<!-- 实体类生成序列化属性-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<!-- 实体类重写HashCode()和equals()-->
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />
<!-- 实体类重写toString() -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
2. <javaTypeResolver> 标签:决定DB中的类型到Java实体类中的类型
- false:默认都是BigDecimal,不做识别;
- true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型,规则如下:
- scale > 0 || length > 18:使用BigDecimal;
- scale = 0 && length[10,18]:使用Long;
- scale = 0 && length[5,9]:使用Integer;
- scale = 0 && length < 5:使用Short;
<!-- java类型处理器:处理DB中的类型到Java中的类型 -->
<javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
<!-- 是否有效识别DB中的BigDecimal类型 -->
<property name="forceBigDecimals" value="true"/>
</javaTypeResolver>
二、配置pom.xml:
注意:<configurationFile> 标签中存放的,是 generatorConfig.xml 文件在项目中的绝对路径。
<dependencies>
......
<!--mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<scope>runtime</scope>
</dependency>
......
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
<finalName>projectName</finalName>
</build>
三、IDEA中的使用:
使用IDEA中的maven插件直接快速生成,位置如下:(双击运行)
四、注意事项:
1. GeneratorConfig.xml 文件中加载的数据库驱动,要和pom.xml文件中mysql-connector-java的版本一致!!
如:留意我们上面的 GeneratorConfig.xml 文件中被注释掉的第8行,由于其加载的驱动版本为8.0.17,高于
pom.xml文件加载的版本5.1.47,导致插件运行报错,不可使用。
2.报异常: java.lang.RuntimeException: Cannot instantiate object of type org.mybatis.generator.plugins.ToStringPlugin
该问题的原因是,你的<artifactId>mybatis-generator-maven-plugin</artifactId>版本低或者不匹配,改成1.3.6就可以了,如下:
......
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
......
3. 如果版本没有问题,加载驱动的 <classPathEntry> 标签依然报红色,可能需要如下操作:
File --> Settings --> ① --> ② --> ③ --> 输入URL:http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd --> 效果见④
更多精彩,请关注我的"今日头条号":Java云笔记
随时随地,让你拥有最新,最便捷的掌上云服务