mybatis generator 概述
新版的mybatis generator已经不完全依赖于xml,可以生成基于注解的mapper。
mybatis generator生成对象:
- table的主键类
- table的非主键,非blob类型的属性类
- blob类型的属性类
- 动态select,update,insert
当配置生成xml文件,则其内容可能包括:
- insertupdate by primary key
- update by example (using a dynamic where clause)
- delete by primary key
- delete by example (using a dynamic where clause)
- select by primary key
- select by example (using a dynamic where clause)
- count by example
注意事项:
- mybatis generator生成的xml文件不会覆盖之前的文件,只会追加到同名文件后面。
- mybatis generator不会合并java文件:要么覆盖当前文件,要么生成另一个名字的文件。
- mybatis generator 不会合并Kotlin文件。同上。
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">
<!-- 配置文档:http://mybatis.org/generator/index.html -->
<generatorConfiguration>
<!-- 为<u>mybatis</u> generator 添加<u>classpath</u> ,一般用于指定driver jar的位置。 -->
<classPathEntry
location="C:\Users\yunzhong\.m2\repository\mysql\mysql-connector-java\8.0.18\mysql-connector-java-8.0.18.jar" />
<!-- targetRuntime: 1 MyBatis3DynamicSql(默认值)。忽略defaultModelType的设置,采用FLAT,主键不会抽取成独立的一个类。
忽略javaClientGenerator的type配置,生成注解方式的<u>sql</u>,不会生成<u>xml</u>。 2
MyBatis3。会有by example的方法生成
3 MyBatis3Simple。没有by example的方法生成 -->
<!-- defaultModelType: 1 conditional(默认值),如果主键是多个字段,将会抽取成单独的一个类。2 flat,一个表对应一个类,包含所有属性。
3 hierarchical,主键会抽取成一个单独的类。 -->
<context id="context1" targetRuntime="MyBatis3Simple"
defaultModelType="flat">
<!-- property
support:suppressAllComments,suppressDate,addRemarkComments,dateFormat -->
<!-- suppressAllComments: false(默认),生成注释;true,没有注释。 -->
<!-- suppressDate: false(默认),生成的注释都有时间戳;true,没有时间戳。 -->
<!-- addRemarkComments: false(默认),生成的注释没有数据库的注释信息;true,注释有数据库的注释信息。suppressAllComments=false则被忽略 -->
<!-- dateFormat: 时间格式。suppressAllComments=true或suppressDate=true则被忽略 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<jdbcConnection
connectionURL="jdbc:mysql://localhost:3306/account?serverTimezone=UTC"
driverClass="com.mysql.jdbc.Driver" password="yunzhong"
userId="root" />
<!-- 必填项:targetPackage,生成java文件的包路径 -->
<!-- 必填项:targetProject,项目路径,和targetPackage联合定位路径。在Eclipse 下,需要项目名开始(account/<u>src</u>/main/java)。在其他环境下,相对路径就可以(./<u>src</u>/main/java)。 -->
<!-- 属性:enableSubPackages。是否在targetPackage后追加数据库表所在的模式名
-->
<javaModelGenerator
targetPackage="org.yunzhong.account.accounting.model"
targetProject="account/src/main/java" />
<!-- 必填项:targetPackage,同上 -->
<!-- 必填项:targetProject,同上 -->
<!-- 属性:enableSubPackages。是否在targetPackage后追加数据库表所在的模式名
-->
<sqlMapGenerator targetPackage="org.yunzhong.account.accounting.dao.mapper"
targetProject="account/src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 必填项:targetPackage,同上 -->
<!-- 必填项:targetProject,同上 -->
<!-- 属性:enableSubPackages。是否在targetPackage后追加数据库表所在的模式名
-->
<javaClientGenerator
targetPackage="org.yunzhong.account.accounting.dao"
targetProject="account/src/main/java" type="XMLMAPPER" />
<!-- 必填项:tableName. -->
<!-- 可选项:domainObjectName. model,mapper.java,mapper.xml将会在此名字上生成,而不是通过tableName生成 -->
<!-- 可选项:mapperName. mapper.xml将会在此名字上生成,而不是通过tableName生成。忽略domainObjectName的配置 -->
<!-- 可选项:modelType. 作用同上。如果targetRuntime为MyBatis3DynamicSql或MyBatis3Kotlin,则此配置不生效 -->
<table schema="" tableName="t_acct_currency_type"
domainObjectName="AcctCurrencyType">
</table>
</context>
</generatorConfiguration>
mybatis generator 运行
eclipse插件运行generator的限制比较大:只有当使用eclipse时才可以。推荐mvn插件的方式运行。可以直接运行jar,这里不涉及。
eclipse 插件
插件安装:直接在marketplace安装即可。
生成配置文件:在目标文件夹新建,找到对应类型。
执行:右键run配置文件即可。
mvn 插件
在maven pom.xml 配置:
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version></version>
<configuration>
<configurationFile></configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</build>
执行:
mvn mybatis-generator:generate