---
layout: post
title: mybatis-generator反向生成
category: 技术
tags: Mybatis
keywords:
description: update:2018-02-01
---
{:toc}
## 创建mysql数据库及表
手动创建数据库,utf-8编码
导出创建表的sql
```sql
/*
Navicat MySQL Data Transfer
Source Server : 172.20.19.200-test
Source Server Version : 50629
Source Host : 172.20.19.200:3306
Source Database : test2
Target Server Type : MYSQL
Target Server Version : 50629
File Encoding : 65001
Date: 2016-07-21 15:50:02
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for esm_palmyy_dept_relation
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '当前表的主键',
`name` varchar(255) NOT NULL COMMENT '名称',
`desc` varchar(255) NOT NULL COMMENT '描述',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
## 在maven项目中配置Mybatis-generator插件
### 将`generatorConfig.xml`放在`src/main/resources`下。
`generatorConfig.xml`的内容为:
```xml
```
如上配置文件所示,Mybatis自动生成的一般配置就完成了。
**注意:配置文件中标签必须按照顺序来编写,否则在生成代码时会报错。**
- 原因
按顺序排序是由文件定义的,其中有内容为
```DTD
```
这句话意思是context标签下的元素必须按照以上顺序编写,而如上的设置方式是根据DTD文件定义设置的。
dtd的修饰符号:
![dtd的修饰符号](//raw.githubusercontent.com/George5814/blog-pic/master/image/mybatis/dtd-definition.jpg)
- 错误内容:
XML Parser Error on line 23: 元素类型为 "context" 匹配 "(property*,plugin*,commentGenerator?,(connectionFactory \|jdbcConnection),javaTypeResolver?,javaModelGenerator,sqlMapGenerator?,javaClientGenerator?,table+)"。
- 标签的配置顺序如下
```xml
或者
```
### 在`pom.xml`中添加Mybatis生成插件的依赖
```xml
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
true
true
src/main/resources/generatorConfig.xml
mysql
mysql-connector-java
5.1.36
```
## 生成代码
在项目的根目录(即`pom.xml`文件所在目录),通过执行maven命令`mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate`在指定位置生成java代码和`*mapper.xml`sql映射文件。
一个`generatorConfig.xml`配置文件可以配置多个``标签,但必须设置id属性,并且设置唯一id值,在生成代码的命令中,可以通过指定context集合(逗号分隔)对指定的context的配置生成代码。命令为`mvn mybatis-generator:generate -Dmybatis.generator.contexts=contextId1,contextId2`