本环境是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>