本环境是spring boot+maven。
MBG(Mybatis Generator)的默认配置文件名:generatorConfig.xml,位置在:src/main/resources文件夹下,如果generatorConfig.xml没有放在resources下,请指定generatorConfig.xml配置文件的路径。
依赖:
1.Java8+
2.一个实现DatabaseMetaData接口的JDBC driver,主要方法getColumns 和getPrimaryKeys 是必须的。
注意点:
1.对于XLM-若已存在同名的XML文件,MBG则自动合并XML文件。且不会覆写你自定义的更改(自定义的SQL)。你可以一遍又一遍的运行它,不用担心XML内容的丢失与自定义更改。但是会替换先前运行生成的任何XML元素。
2.对于Java类-MBG不会合并Java文件。它会覆盖之前存在的文件或者使用新的唯一名称生成新文件。在迭代方式运行MBG时必须要手动合并Java文件。作为Eclipse插件时,MBG可以自动合并Java文件。
3.如果存在冲突,MBG将使用唯一名称(例如MyClass.java.1)保存新生成的文件。可以此命令覆盖存在的文件:java -jar mybatis-generator-core-x.x.x.jar -configfile \temp\generatorConfig.xml -overwrite
使用MySQL时注意事项:
1.MySQL支持signed和unsigned,numeric类型的字段。这些是JDBC不支持的,Mybatis Generator不能自动转换这些类型的字段。而Java类型都是signed的,使用unsigned时可能会导致无符号字段精度丢失。MBG为MySQL中的unsigned numeric类型的字段提供了<columnOverride>标签。
<table tableName="ALLTYPES" > <columnOverride column="UNSIGNED_BIGINT_FIELD" javaType="java.lang.Object" jdbcType="LONG" /> </table>
必须自己将返回值转换为适当的类型(在这种情况下,为java.math.BigInteger)。一般是要转成范围更大的类型。
2.MySQL对Catalog和Schema不是友好支持。如果运行 create schema命令则会创建数据库,而JDBC驱动会将其报告为catalog.但是MySql语法不支持标准的catalog..table SQL语法。因此,最好不要在生成器配置中指定catalog或schema。 只需指定表名并在JDBC URL中指定数据库即可。如果使用Connector/J版本是8.x版本,则会尝试对mysql数据库中的系统表(sys, information_schema, performance_schema, etc.)生成代码。若要进制此行为,则 将 nullCatalogMeansCurrent=true追加到JDBC的URL中即可。
jdbc:mysql://127.0.0.1:3309/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false&nullCatalogMeansCurrent=true
一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表、视图、字段等)
如数据库对象表的全限定名可表示为:Catalog名.Schema名.表名。
SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就象域名一样,如果喜欢的话,每个IP地址都可以拥有多个域名。
MBG插件包含一个goal目标即 mybatis-generator:generate,此目标maven不会自动执行,可以使用 mvn mybatis-generator:help 查看帮助。运行方法2种(也可以idea中双击mybatis-generator:generate):
1.命令行运行:mvn mybatis-generator:generate
2.覆写已存在的文件: mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate
如果generatorConfig.xml文件使用了自定义的插件,在指定依赖前,请先编译,确定生成了jar包(不然会报错提示无法初始化该对象)
pom.xml文件中配置:
<build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.0</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency> </dependencies> <!-- 以下代码放开后则会作为maven构建的一部分,即随着maven的构建自动执行MBG,生产环境一定要注释 --> <!--<executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>generate</goal> </goals> </execution> </executions>--> </plugin> </plugins> </build>
generatorConfig.xml文件配置:
<?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>
<context id="DB2Tables" targetRuntime="MyBatis3">
<property name="javaFileEncoding" value="UTF-8"/>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3309/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false"
userId="root" password="123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成对象 -->
<javaModelGenerator targetPackage="com.ruyi.mybatis.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成xml文件 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成mapper接口 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.ruyi.mybatis.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="emp" domainObjectName="Employee">
<property name="useActualColumnNames" value="true"/>
</table>
<table tableName="dept" domainObjectName="Department">
<property name="useActualColumnNames" value="true"/>
</table>
</context>
</generatorConfiguration>