springboot集成mybatis-generator自动生成代码
1、pom.xml 添加依赖:
<!--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.5</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>
<scope>runtime</scope>
</dependency>
在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>
2、在resourse文件下新建generator文件夹,在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.yml"/> <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.aibaiyang.idemo.util.MyMapper"/> </plugin> <!--这里填写自己的数据库链接--> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://47.107.139.169:3306/test?characterEncoding=utf8" userId="root" password="123456"> <property name="nullCatalogMeansCurrent" value="true" /> </jdbcConnection> <!--这里填写生成的表实体类目录--> <javaModelGenerator targetPackage= "com.aibaiyang.idemo.entity" targetProject="src/main/java"/> <!--这里填写生成的表xml目录--> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/> <!--这里填写生成的表mapper目录--> <javaClientGenerator targetPackage="com.aibaiyang.idemo.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>
其中<properties resource="application.yml"/>对应的是项目的yml配置文件。
3、创建数据库 test 和 表 course、student
CREATE TABLE `course` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `course_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
4、新建名称为com.aibaiyang.demo.mapper.util的包,并新建MyMapper接口,内容如下:
package com.aibaiyang.idemo.util; import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.MySqlMapper; /** * @Author zhong guo * @Date 2019/10/5 22:42 * @description **/ public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> { //TODO //FIXME 特别注意,该接口不能被扫描到,否则会出错 }
5、执行mvn命令生成代码:mvn mybatis-generator:generate
将在com.aibaiyang.idemo.mapper、com.aibaiyang.idemo.entity、resourse/mapper 下生成相应的代码;
每次生成代码会把以前代码覆盖,生成完代码后把相关代码拷贝到实际项目中;
6、在主程序入口添加 @MapperScan注解,使用mapper接口
package com.aibaiyang.idemo; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan(basePackages = "com.aibaiyang.idemo.mapper") public class IdemoApplication { public static void main(String[] args) { SpringApplication.run(IdemoApplication.class, args); } }
8、参考:https://my.oschina.net/tongjh/blog/1604115