参考深入理解MyBatis这本书以及其他博客
1.因为我需要在一个子module中生成代码,重新设计路径
2.解决多个数据库中,表重名覆盖的问题
直接代码

  • 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>
<!--1. context属性targetRuntime设置为MyBatis3Simple避免生成Example相关的代码和方法,
如果需要Example设置为MyBatis3
2. context属性defaultModelType设为flat,目的是使每张表只生成一个实体类
3. 因为此处使用的数据库为MySql,所以前后分隔符都设置为‘‘’
4. 注释生成器commentGenerator中配置了生成数据库的注释信息,并且禁止在注释中生成日期
5. jdbcConnection简单的配置了要链接的数据源信息
6. javaModelGenerator配置生成的包名为com.hcnet2006.mango,
targetProject设置为src\main\java
7. sqlMapGenerator配置生成的Mapper.xml文件位置,这里采用XMLMapper类型。接口和XML完全分离
8. javaClientGenerator配置生成Mapper接口的位置,这里采用的XMLMAPPER类型,接口和XML完全分离
9. 最后的table使用通配符匹配数据库中所有的表,所有表都有主键自赠的id字段,
sqlStatement针对当前数据库配置MYSQL
-->

<context id="MySqlTables"
targetRuntime="MyBatis3Simple"
defaultModelType="flat">
<!--关键字与分隔符加反引号-->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!--序列化以及字符串插件-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!--注释生成器-->
<commentGenerator>
<!--是否阻止生成注释-->
<property name="suppressAllComments" value="true"/>
<!--是否生成带注释的时间戳-->
<property name="suppressDate" value="true"/>
<!--是否添加数据表的备注信息-->
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<!--JDBC数据源连接-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/hc_official_website_1?serverTimezone=UTC"
userId="root"
password="123456"


>
<!--确定一个数据库-->
<property name="nullCatalogMeansCurrent" value="true"/>

</jdbcConnection>
<!--实体类代码生成器-->
<javaModelGenerator targetPackage="cn.hcnet2006.blog.hcnetwebsite.bean" targetProject="./hcnet-website-1/src/main/java">
<!-- <property name="trimStrings" value="true"/>-->
</javaModelGenerator>
<!--MapperXML文件生成器-->
<sqlMapGenerator targetPackage="mappers" targetProject="./hcnet-website-1/src/main/resources"/>
<!--Mappper接口生成器-->
<javaClientGenerator type="XMLMAPPER" targetPackage="cn.hcnet2006.blog.hcnetwebsite.mapper" targetProject="./hcnet-website-1/src/main/java"/>
<!--数据库表配置-->

<table tableName="sys_menu">
<!--数据库主键生成策略-->
<generatedKey column="id" sqlStatement="Mysql"/>
</table>
</context>
</generatorConfiguration>
  • 使用Java 代码生成
package cn.hcnet2006.blog.hcnetwebsite.generator;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class Generator {
public static void main(String []args) throws Exception{
//MBG执行过程中的警告信息
List<String> warnings = new ArrayList<>();
//当前代码重复时,覆盖旧的代码
boolean overwrite = true;
//读取BMG配置文件
InputStream is = Generator.class.getResourceAsStream(
"/generator/generatorConfig.xml");
//配置解析器
ConfigurationParser cp = new ConfigurationParser(warnings);
//配置器
Configuration config = cp.parseConfiguration(is);
//关闭输入流
is.close();
//默认回滚
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
//创建MBG
MyBatisGenerator mbg = new MyBatisGenerator(config,callback,warnings);
//执行生成代码
mbg.generate(null);
//输出警告信息
for(String warn: warnings){
System.out.println(warn);
}
}

}