简介
官网链接:https://mapperhelper.github.io/docs/
- 通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。
- 极其方便的使用MyBatis单表的增删改查。
- 支持单表操作,不支持通用的多表联合查询。
上面的概述是摘自官网的介绍,就是使用这个插件的话,简单的单表操作是不需要我们再去编写代码了。
Mybatis Generator
在介绍通用mapper之前,先来介绍一下mybatis generator。详细文档配置可参照: https://gitee.com/free/Mybatis_Utils/blob/master/MybatisGeneator/MybatisGeneator.md
<?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>
<!-- 当classpath下面没有JDBC驱动的时候,我们通常通过这个属性指定驱动的路径
<classPathEntry location="E:\mysql\mysql-connector-java-5.1.29.jar"/>
-->
<!-- flat:该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。这种模型最简单,推荐使用 -->
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<!-- 下面这些是在mysql的关键字上自动加上 ` `-->
<property name="autoDelimitKeywords" value="true"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!--配置插件-->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value=" tk.mybatis.mapper.common.Mapper"/>
<!--<property name="mappers" value="com.example.demo.utils.CommonMapper"/>-->
</plugin>
<commentGenerator>
<property name="suppressAllComments" value="false"/><!-- 是否取消注释 -->
<property name="suppressDate" value="true"/> <!-- 是否生成注释代时间戳-->
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false"
userId="root"
password="root">
</jdbcConnection>
<!--生成pojo-->
<javaModelGenerator targetPackage="com.example.demo.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.demo.mapper" targetProject="src/main/resources"/>
<javaClientGenerator targetPackage="com.example.demo.mapper" targetProject="src/main/java" type="XMLMAPPER"/>
<!-- 这里用的 % 通配符匹配全部的表,另外所有表都有自动增长的id字段。如果不是所有表的配置都一样,可以做针对性的配置 -->
<table tableName="%">
<generatedKey column="id" sqlStatement="Mysql" identity="true"/>
</table>
</context>
</generatorConfiguration>
复制代码
编写好上面的xml配置后,就可以运行了,
使用 maven 运行(推荐)
只需要引入这个plugin就行,然后使用 mvn mybatis-generator:generate。
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<verbose>false</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<--下面配置是通用mapper的配置,可选 -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.3</version>
</dependency>
</dependencies>
</plugin>
复制代码
使用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.util.ArrayList;
import java.util.List;
/**
* @author yanghuan
*/
public class MainGenerator {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(
MainGenerator.class.getResourceAsStream("/generator/generatorConfig.xml"));
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, null);
myBatisGenerator.generate(null);
}
}
复制代码
接下来就会生成对应的实体类、接口和xml文件
PageHelper的使用
一般统一mapper也会使用到强大的分页插件PageHelper PageHelper的文档地址: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
它的原理就是使用了mybatis提供的拦截器(plugins),对SQL进行拦截。因为是国人写的,代码的注释很完整,阅读源码压力也不会太大。 先引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
复制代码
Spring Boot中,只需要在application.yml中引入。
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
复制代码
具体的用法在之后使用通用mapper的时候再说明。