一、这是什么
在使用mybatis的开发中我们常常有许多的实体类映射到数据库表中。
在映射的过程中,手工构建时往往因为会因为一些“小问题”而出现各种各样的小bug,在现实的修
“bug”过程中带来了极大的烦恼。
mybatis官方提供的逆向工程就是为了解决这一问题而存在的
二、有什么用
逆向工程在可以通过映射数据库的表格自动构建实体类以及映射文件(包括mapper.xml、mapper.java、po…)
一般的实际开发中,通常使用逆向工程的方法生成相应的文件以带来极大的简便
三、怎么用
首先,在数据库中要有相应的表
sql语句如下:
CREATE TABLE `user` (
`user_id` varchar(24) NOT NULL,
`user_name` varchar(24) NOT NULL,
`user_password` varchar(100) NOT NULL,
`user_email` varchar(50) NOT NULL,
PRIMARY KEY (`user_id`)
导包:
1、java工程: mybatis-generator-core-1.3.2.jar
2、mave工程:
在pom.xml中加入依赖以及plugin工具
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<!--加入的plugin工具-->
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.3</version>
<configuration>
<!--配置文件generatorConfig.xml的路径-->
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
其中配置文件的路径根据实际开发情况自行调整
然后逆向工程的配置文件
文件路径与pom.xml中相同:src/main/resources/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="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--mysql数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/dataname"
userId="root"
password="123456">
</jdbcConnection>
<!--oracle配置-->
<!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
userId="root"
password="123456">
</jdbcConnection> -->
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,
为 true时把JDBC DECIMAL和NUMERIC类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--在maven中生成的文件的路径可以在pom.xml中定义-->
<!-- targetProject:生成model类的位置,重要!! -->
<javaModelGenerator targetPackage="com.demo.film.model" targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetProject:mapper映射xml文件生成的位置,重要!! -->
<sqlMapGenerator targetPackage="com.demo.film.mapper"
targetProject=".\src">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置,重要!! -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.demo.film.dao"
targetProject=".\src">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!-- 指定数据库表,要生成哪些表,就写哪些表,要和数据库中对应,不能写错! -->
<table tableName="user"></table>
</context>
</generatorConfiguration>
注意:逆向工程最好使用时才把应该映射的table加到配置文件中,同一配置文件多次运行会对生成
的Mapper.xml文件生成多余的代码,以及生成多余的po类
##### 执行逆向工程自动生成代码
java工程:
生成一个test类,具体代码如下:
public class GeneratorSqlmapTest {
public void generator() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定 逆向工程配置文件
File configFile = new File("src/main/resources/generatorConfig.xml");
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) throws Exception {
try {
GeneratorSqlmapTest generatorSqlmap = new GeneratorSqlmap();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
maven工程: 如果是IDEA环境下,在Maven projects中寻找mybatis-generator,点击即可 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181112090720441.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjcwODk1,size_16,color_FFFFFF,t_70)
刷新工程目录,即可看到生成的文件
在生成的po类中会多出一个xxxExample.java,一般的实际开发中不会用到可以将其删除,在生成的
xxxMapper.xml中会自动生成对应的实体类与数据库表对应生成的resultMap