SpringBoot结合Mybatis的generator插件以及tk.mybatis的通用mapper实现逆向工程的生成
1.首先在数据库中建好表。
2.然后在pom中增加mybatis和通用mapper的依赖,以及generator的插件。
3.需要自己在utils中的MyMapper中继承tk.mybatis中的通用模板。
4.然后编辑generator.xml文件,注意和properties中配置的结合,设置好mapper生成的文件的具体位置。具体可以看帖的代码的注释。
需要特别注意的是:generator.xml文件中,context内的文件要按序放,不然会报错
5.然后在IDEA中点击右侧的maven 插件,选择generate即可。
6.生成mapper文件后,会发现mapper继承了我们的MyMapper。
下图所示的XXXXMapper和POJO中的Entity类和resource中的mapper.xml就是逆向生成的产物。
7.逆向工程生成之后,想要实现简单的CRUD操作还要记得,在入口类上添加MapperScan注解。并且serviceImpl中也要加上@Service注解。
另外本人在实践的时候发现注入Mapper会报错,在Mapper.java上添加@Mapper并没有用。但是不影响运行。
如果大家觉得看着碍眼,就在Mapper上加一个@Component的注解。
更新:发现加上@Mapper才可以运行,@Component不行。具体原因未知。求教。
现将pom.xml文件和generatorConfig.xml以及properties文件附上。
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.martina</groupId>
<artifactId>o2o</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>o2o</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<druid.version>1.1.10</druid.version>
<mysql.version>5.1.46</mysql.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--SpringBoot test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--Mysql连接-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>${mysql.version}</version>
</dependency>
<!--引入阿里巴巴的数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!--Mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--通用mapper,使用mapper模板进行-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<!--这个是用于display生成generator.xml文件的时候用的,这里我们用插件生成,所以注释掉不影响-->
<!-- <dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork> <!-- fork=true,用于明确表示编译版本配置的可用 -->
</configuration>
</plugin>
<!-- mybatis逆向工程插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<!--允许移动生成的文件 -->
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<!--下面这两个依赖不引入是不会逆向生成的-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.3</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
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>
<!-- 引入 application.properties -->
<properties resource="application.properties" />
<!-- MyBatis3Simple:不生成 Example相关类及方法 defaultModelType="flat" -->
<context id="MysqlContext" targetRuntime="MyBatis3Simple" >
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- 指定生成 Mapper 的继承模板 -->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="${generator.mappers}"/>
</plugin>
<!--注意context内的文件要按序放-->
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- jdbc 连接配置 -->
<jdbcConnection driverClass="${spring.datasource.driver-class-name}"
connectionURL="${spring.datasource.url}"
userId="${spring.datasource.username}"
password="${spring.datasource.password}">
</jdbcConnection>
<javaTypeResolver>
<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成实体类的包名和位置 ,targetPackage指的是包名,targetProject值得是路径位置-->
<!-- 对于生成的pojo所在包,pojo其实就是domain Entity-->
<javaModelGenerator targetPackage="${generator.javaModel-targetPackage}" targetProject="${generator.targetProject}">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 对于生成的mapper.xml所在目录 -->
<sqlMapGenerator targetPackage="${generator.sqlMap-targetPackage}" targetProject="src/main/resources"/>
<!-- 配置mapper对应的java映射 也可以叫dao层 -->
<javaClientGenerator targetPackage="${generator.javaClient-targetPackage}" targetProject="${generator.targetProject}"
type="XMLMAPPER"/>
<table tableName="tb_area"></table>
</context>
</generatorConfiguration>
配置文件中的配置:
# Generator
generator.targetProject=src/main/java
generator.mappers=com.martina.o2o.utils.MyMapper
generator.javaModel-targetPackage=com.martina.o2o.pojo
generator.sqlMap-targetPackage=mapper
generator.javaClient-targetPackage=com.martina.o2o.mapper
如果读者在操作过程中发现错误,可以查看我的 另一篇文章:《mybatis通用模板 错误记录》