通用Mapper在1.0.0版本的时候增加了MyBatis Generator(以下简称MBG)插件,使用该插件可以很方便的生成实体类、Mapper接口以及对应的XML文件。
下面介绍了mybatis-generator在spring-boot中的使用过程
项目依赖 pom.xml
我使用mysql作为数据库,使用了Myatis通用Mapper,和pagehelper分页插件,下面是他们的依赖
<!-- Spring Boot Mybatis 依赖 -->
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.4</version>
</dependency>
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>
<!-- Mybatis Generator -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<!-- MySQL 连接驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
Mybatis-Generator的maven插件
在pom.xml的插件列表中加入mybatis-generator的maven插件,这样就可以使用mvn mybatis-generator:generate
命令来生成实体类、Mapper接口以及对应的XML文件。
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.3.6</version>
</dependency>
</dependencies>
</plugin>
Mybatis-Generator配置
上面pom.xml中generator插件的配置文件目录指向了
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
那么我们建立/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>
<properties resource="application.properties"/>
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<!--这里修改成统一的Mapper父接口-->
<property name="mappers" value="com.example.mapper.util.MyMapper"/>
</plugin>
<!--这里填写自己的数据库链接-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://192.168.11.22:3306/tongjh_demo?characterEncoding=utf8"
userId="tongjh"
password="tong123">
</jdbcConnection>
<!--这里填写生成的表实体类目录-->
<javaModelGenerator targetPackage="com.example.mapper.domain" targetProject="src/main/java"/>
<!--这里填写生成的表xml目录-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
<!--这里填写生成的表mapper目录-->
<javaClientGenerator targetPackage="com.example.mapper.mapper" targetProject="src/main/java"
type="XMLMAPPER"/>
<!--这里的%通配符表示库里面的所有表-->
<table tableName="%">
<!--mysql 配置-->
<generatedKey column="id" sqlStatement="Mysql" identity="true"/>
<!--oracle 配置-->
<!--<generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>-->
</table>
</context>
</generatorConfiguration>
建立自己的统一Mapper接口
新建com.example.mapper.util.MyMapper接口,作为所有生成的mapper接口的统一父接口
package com.example.mapper.util;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MyMapper<T> extends Mapper<T>,MySqlMapper<T> {
//TODO
//FIXME 特别注意,该接口不能被扫描到,否则会出错
}
使用maven命令生成数据库表的实体类、Mapper接口以及对应的XML文件。
mvn mybatis-generator:generate
- 打开com.example.mapper.mapper目录,查看生成的mapper接口
- 打开com.example.mapper.domain目录,查看生成的实体类
- 打开src/resources/mapper目录,查看生成的表xml
配置主入口文件 MapperApplication
必须在主入口文件中添加MapperScan
注解,程序才能扫描到该目录下的所有mapper接口。
package com.example.mapper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = "com.example.mapper.mapper")
public class MapperApplication {
public static void main(String[] args) {
SpringApplication.run(MapperApplication.class, args);
}
}
下面就可以使用mapper接口来操作数据库了