第一步、使用maven创建项目

默认选项,不需要点击“Create from archetype”。

创建成功。

第二步、pom.xml文件加入以下依赖和插件

 <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.6</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <!-- mybatis-generator自动生成代码插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.6</version>
            </plugin>
        </plugins>
    </build>

第三步、编写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="testTables" targetRuntime="MyBatis3">
		<commentGenerator>
			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
		<jdbcConnection driverClass="" connectionURL="" userId="" password="">
		</jdbcConnection>


		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
			NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成PO类的位置 -->
		<javaModelGenerator targetPackage="" targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		<!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="" targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER" targetPackage="" targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>
		<!-- 指定数据库表 -->
		<table schema="" tableName=""/>
		<table schema="" tableName=""/>
		<table schema="" tableName=""/>
		<table schema="" tableName=""/>
		<table schema="" tableName=""/>
		<table schema="" tableName=""/>
		<table schema="" tableName=""/>
	</context>
</generatorConfiguration>

配置数据库驱动、URL、用户和密码;生成的po类、mapper接口、mapper.xml文件的位置;指定数据库表,也可以指定数据库视图(关联表查询建议用视图)。

第四步、写运行方法

public class GeneratorSql {

	public void generator() throws Exception{

		List<String> warnings = new ArrayList<>();
		boolean overwrite = true;
		//指定 逆向工程配置文件
		File configFile = new File("");
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(configFile);
		DefaultShellCallback callback = new DefaultShellCallback(overwrite);
		MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback,warnings);
		myBatisGenerator.generate(null);

	} 
	public static void main(String[] args) {
		try {
			GeneratorSql generatorSql = new GeneratorSql();
			generatorSql.generator();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

指定逆向工程xml配置文件位置。

第五步、启动运行

注意问题:

  1. 如果需要重新逆向生成,要把之前的生成的代码全部删除,否则新生成的代码会和之前的代码相结合。
  2. 数据库的表名尽量不要重复,或者跟数据库本身存在的关键字一样。例如,以user作为表名,会生成除了你自己的表外和数据库本身的user表,导致UserMapper.xml存在大量重复ID而出错。还有尽量不要使用数据库本身的关键字来命名,以我的例子,用了order来命名订单表,假如查询语句是
    select * from order

    这里在查询的时候,数据库本身就会报错,因此要么改表名重新逆向工程,要么在xml文件中的每一个“order”两边加上“`”(tab键的上一个键)。

  3. 以上两个问题都是踩过的坑,心累

如果不用maven的话,第二步改成将相关jar包导入到lib目录下即可。