使用mybatis代码生成器,须先在数据库中创建相应的表。
一、导入依赖
在pom.xml中加入如下依赖:
<!--mybatis生成器-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.3</version>
</dependency>
</dependencies>
二、配置文件
在项目的src/main/resources中创建generator目录,在该目录下创建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>
<!--defaultModelType:使一个表只生成一个实体类-->
<!--因为使用的mysql,所以前后分隔符都设置为 ` -->
<context id="MySqlContext"
targetRuntime="MyBatis3Simple"
defaultModelType="flat">
<property name="beginingDelimiter" value="`"/>
<property name="endingDemiliter" value="`"/>
<!--注释生成器:配置了禁止在注释中生成日期-->
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<!--连接的数据源信息-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis"
userId="root"
password="123456">
</jdbcConnection>
<!--配置生成的包名-->
<javaModelGenerator targetPackage="test.model" targetProject="src/main/java">
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--配置生成Mapper.xml文件的位置-->
<sqlMapGenerator targetPackage="test.xml"
targetProject="src\main\resources"/>
<!--配置生成mapper接口得位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="src\main\java"/>
<!--%匹配数据库中所有的表-->
<table tableName="%">
<generatedKey column="id" sqlStatement="MySql"/>
</table>
</context>
</generatorConfiguration>
三、运行方式
1.使用java编写代码运行
在项目groupId对应的目录下创建generator包,并在包中创建generator.java类,代码如下:
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;
/**
* Created by 12450 on 2019/4/1.
*/
public class Generator {
public static void main(String[] args) throws Exception{
//MBG执行过程中得警告信息
List<String> warnings = new ArrayList<>();
//当生成得代码重复时,覆盖原代码
boolean overwrite = true;
//读取MBG配置文件
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 myBatisGenerator = new MyBatisGenerator(config,callback,warnings);
//执行生成代码
myBatisGenerator.generate(null);
//输出警告信息
for (String warning: warnings) {
System.out.println(warning);
}
}
}
运行即可生成。
四、配置文件参数解析
<generatorConfiguration></generatorConfiguration>中有三个子级标签
1.properties(最多一个):用于指定一个需要在配置中解析使用的外部属性文件,引入属性文件后,可以再配置中使用${property}这种形式的引用。包含resource和url两个属性。不可同时出现。
-
resource:指定classpath下的属性文件。
-
url:指定文件系统上的特定位置。
2.classPathEntry(可以配置多个):classPathEntry标签最常见的用法是通过属性location指定驱动的路径。
3.context:只有一个必选属性id,用来唯一确定该标签。该id属性可以再运行MBG时使用。以下是几个可选属性:
defaultModeType:定义了MBG如何生成实体类。
- conditional:默认值,和下边的hierarchical类似,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类。而是会将该字段合并到基本实体类中。
- flat:该只为每张表生成一个实体类。
- hierarchical:如果表有主键,那么该模型会产生一个单独的主键实体类,如果表有BLOB字段,则会为表生成一个包含所有BLOB字段的单独的实体类,然后为所有其他字段另外生成一个单独的实体类。MBG会在所有生成的实体类之间维护一个继承关系。
targetRuntime:指定生成代码的运行时环境。
- MyBatis3:默认值
- MyBatis3Simple:这种情况不会生成与Example相关的方法。