注意: 本文是在springboot整合mybatis的基础下 进行延伸的。
mybatis 集成springboot 就不说了,下面讲一下,由于mybatis的mapper以及 实体类 如果要手写的话,准备工作会很繁杂,由此,介绍一下逆向生成工具。
首先,引入对应依赖,在pom文件中,build目录下,plugins下引入一下依赖
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/generator/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.2</version>
</dependency>
</dependencies>
</plugin>
其中,引入了 generatorConfig.xml 文件,路径根据自己的需要定义
一下是 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>
<!--maven命令: mvn mybatis-generator:generate-->
<!--mysql 连接数据库jar 这里选择自己本地位置-->
<classPathEntry location="D:\jar\mysql-connector-java-5.1.40.jar" />
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"><!--不生成example--> <!--将MyBatis3Simple换成MyBatis3则生成Simple文件-->
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/springboot_demo?serverTimezone=UTC" userId="root"
password="123456">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.example.demo.entity"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置
如果maven工程只是单独的一个工程,targetProject="src/main/java"
若果maven工程是分模块的工程,targetProject="所属模块的名称",例如:
targetProject="ecps-manager-mapper",下同-->
<sqlMapGenerator targetPackage="mapper"
targetProject="src/main/resources">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example.demo.dao"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table schema="mysql" tableName="user"></table>
</context>
</generatorConfiguration>
启动它,需要引入本地的 mysql-connector-java 的jar包,自己下载就可以了。
配置好 文件内容后,运行命令:
maven命令: mvn mybatis-generator:generate
逆向生成了,此方法,只生成一个mapper,并不会生成 example 文件。(上面xml文件里,有一行可以配置)
集成通用mapper:
那么现在有个问题,逆向生成的mapper里,有好多都是基本方法,本人就是看着这些通用方法太乱,才没有引入example的mapper文件,那现在生成出来的mapper 还是有7个基本的方法,所以我们可以集成一个通用mapper,让每个mapper都继承这个通用的mapper , 这样就简化了,也更加符合Java思想了。
步骤:
先引入通用mapper 的pom依赖
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
然后自己定义一个通用mapper类,如下:
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MyMapper<T> extends Mapper<T>,MySqlMapper<T> {
}
注意: 自定义的通用mapper 不要和生成的mapper放在一个包下,否则,扫描会报错。(这个也是看其他博主文章有写到,自己没有试,大家可以自己试下,一起讨论。)
然后,在springboot的启动类 Application 中加入注解
@MapperScan(value = "com.example.demo.dao", markerInterface = MyMapper.class)
value里对应的是,每个实体对应的mapper, 后面则是你刚才自定义的通用的mapper类
到此,集成通用mapper 就完成了。
当然,有点瑕疵的是,逆向生成的时候,因为不是根据通用mapper来的 ,所以,生成完成以后, 把mapper接口以及xml文件的方法手动删掉就可以了。
本文参考:通用Mapper官方文档: https://gitee.com/free/Mapper
同时,如果想要用分页插件,可前往: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
这个介绍的比较详细。
动态sql 详见: http://www.mybatis.org/mybatis-3/zh/statement-builders.html
感觉本文章有用的话,引用请注明出处:https://blog.csdn.net/qq_26620259/article/details/84323850