第一步、使用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配置文件位置。
第五步、启动运行
注意问题:
- 如果需要重新逆向生成,要把之前的生成的代码全部删除,否则新生成的代码会和之前的代码相结合。
- 数据库的表名尽量不要重复,或者跟数据库本身存在的关键字一样。例如,以user作为表名,会生成除了你自己的表外和数据库本身的user表,导致UserMapper.xml存在大量重复ID而出错。还有尽量不要使用数据库本身的关键字来命名,以我的例子,用了order来命名订单表,假如查询语句是
select * from order
这里在查询的时候,数据库本身就会报错,因此要么改表名重新逆向工程,要么在xml文件中的每一个“order”两边加上“`”(tab键的上一个键)。
-
以上两个问题都是踩过的坑,心累
如果不用maven的话,第二步改成将相关jar包导入到lib目录下即可。