推荐阅读此网站,用法和介绍全面超级详细:Mybatis通用mapper
通用mapper的特点
让开发者极其方便的使用MyBatis进行单表的增删改查,但是也仅仅支持单表操作,不支持通用的多表联合查询。
实现原理
作者的博客:通用mapper的实现原理
整合到项目中
参考上边的文档即可,楼主这里只记录相关jar包的maven地址
- Spring Boot项目整合通用mapper的启动器:mapper-spring-boot-starter
- Spring项目整合通用mapper:mapper
分页插件【使用的Page Helper】
<!-- springboot自动寻找适配的版本-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
Mybatis Generator 插件
通用Mapper在1.0.0版本的时候增加了MyBatis Generator插件,使用该插件可以很方便的生成实体类、Mapper接口以及对应的XML文件。官方给出两种方式,但是编码的方式楼主不太喜欢,因此这里楼主只记录一下使用Maven执行Mybatis Generator 插件的方式。
PS:不会用Mybatis Generator的可以看作者写的Mybatis Generator博客,楼主这里不再讲解:Mybatis Generator
使用Maven执行Mybatis Generator
引入依赖
<properties>
<jdk.version>1.8</jdk.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.61</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</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.38</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
创建generatorConfig.xml
<!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="config.properties"/>-->
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<!-- caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true -->
<property name="caseSensitive" value="true"/>
</plugin>
<!--配置maven命令-->
<!--mvn mybatis-generator:generate-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/tk"
userId="root"
password="root">
</jdbcConnection>
<!-- <jdbcConnection driverClass="${jdbc.driverClass}"-->
<!-- connectionURL="${jdbc.url}"-->
<!-- userId="${jdbc.user}"-->
<!-- password="${jdbc.password}">-->
<!-- </jdbcConnection>-->
<javaModelGenerator targetPackage="top.chenfu.boot.mapper.model"
targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="mapper"
targetProject="src/main/resources"/>
<!--通用Mapper接口的配置,配置javaClientGenerator后会生成对应的接口文件,该接口会自动继承前面配置的通用Mapper接口-->
<javaClientGenerator targetPackage="top.chenfu.boot.mapper.dao"
targetProject="src/main/java"
type="XMLMAPPER"/>
<!-- 单表生成-->
<!-- <table tableName="user">-->
<!-- <generatedKey column="id" sqlStatement="JDBC"/>-->
<!-- </table>-->
<!--统一生成,这里使用SQL通配符%来匹配所有表。
generatedKey意味着所有的表都有一个id自增的主键,
在生成实体类的时候会根据该配置生成相应的注解-->
<table tableName="%">
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
<!--补充类似 Oracle 序列的配置方式[官网案例]-->
<!--这里的 {1} 代表的是对应表的大写形式,{0} 是小写形式。-->
<!--<generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>-->
<!-- public class Author {-->
<!-- @Id-->
<!-- @GeneratedValue(strategy = GenerationType.IDENTITY,-->
<!-- generator = "select SEQ_AUTHOR.nextval from dual")-->
<!-- private Integer id;-->
<!-- // 省略其他-->
<!-- }-->
</table>
</context>
</generatorConfiguration>
编写mvn命令
内容如下
mybatis-generator:generate
运行maven命令即可
最后,没有案例的博客就是耍流氓!源码奉上—SpringBoot整合通用Mapper【Tk Mybatis】。