软件测试学习笔记丨 Spring Boot 自动生成数据库相关代码模版
作者:测试人
- 2024-05-16 北京
本文字数:4908 字
阅读完需:约 16 分钟
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/30741
一,导入 MyBatisGenerator 依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- mysql连接 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!--mybatis坐标-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!-- 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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<!--插件设置-->
<configuration>
<!--允许移动生成的文件-->
<verbose>true</verbose>
<!--启用覆盖-->
<overwrite>true</overwrite>
<!--自动生成配置 如果名字是generatorConfig.xml可以省略配置-->
<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
复制代码
导入成功后对应 maven 可以看到有该插件
mvn mybatis-generator:generate
![](https://static001.geekbang.org/infoq/b2/b24a7657f73e43c1b56f43fd3129af5f.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
二,新增 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>
<!--执行generator插件生成文件的命令: call mvn mybatis-generator:generate -e -->
<!-- 引入配置文件 -->
<properties resource="generator/config.properties"/>
<!--classPathEntry:数据库的JDBC驱动,换成你自己的驱动位置 可选 -->
<!-- <classPathEntry location="${jdbc.jar.path}"/>-->
<!-- 一个数据库一个context 配置对象环境-->
<!-- id="MysqlTable" :此上下文的唯一标识符。此值将用于一些错误消息。
targetRuntime="MyBatis3Simple":为了避免生成Example相关的代码和方法。如果需要则改为Mybatis3
defaultModelType="flat" :每个表只生成一个实体类 -->
<context id="MysqlTable" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<!-- 配置起始与结束标识符 指明数据库的用于标记数据库对象名的符号-->
<!-- ORACLE就是双引号,MYSQL默认是`反引号 数据库使用mysql,所以前后的分隔符都设为”`”-->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!--用来定义一个插件,用于扩展或者修改MBG生成的代码,不常用,可以配置0个或者多个,个数不受限制。
只有一个Type标签,其中填插件的全限定名。
常用的有缓存插件,序列化插件,RowBounds插件,ToString插件等。-->
<plugin type="${mapper.plugin}">
<property name="mappers" value="${mapper.Mapper}"/>
</plugin>
<!--数据库连接配置-->
<jdbcConnection driverClass="${jdbc.driver}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection>
<!-- javaModelGenerator - 配置生成的实体类位置 type使用XMLMAPPER,会使接口和XML完全分离。
targetPackage:放置生成的类的包。 MyBatis Generator 将根据需要为生成的包创建文件夹
targetProject:包所在的project下的位置,指定了将保存对象的项目和源文件夹。该目录不存在,MyBatis Generator 将不会创建该目录 -->
<javaModelGenerator targetPackage="${java.targetPackage}" targetProject="${java.targetProject}">
<!-- 设置一个根对象,如果设置了这个根对象,那么生成的keyClass或者recordClass会继承这个类;
在Table的rootClass属性中可以覆盖该选项
注意:如果在key class或者record class中有root class相同的属性,MBG就不会重新生成这些属性了,
包括:1,属性名相同,类型相同,有相同的getter/setter方法;
rootClass:所有实体类的父类,如果父类定义了一些字段以及对应的getter、setter方法,那么实体类中就不会再生成。必须要类的安全限定名,如com.momo.test.BasePo -->
<property name="rootClass"
value="${java.rootClass}"/>
</javaModelGenerator>
<!-- sqlMapGenerator:配置SQL映射生成器(Mapper.xml文件)的属性,可选且最多配置1个 配置映射位置只有两个必选属性(和实体类的差不多):
targetPackage:生成映射文件存放的包名,可能会受到其他配置的影响。
targetProject:指定目标targetPackage的项目路径,可以用相对路径或者绝对路径 -->
<sqlMapGenerator targetPackage="${mapper.targetPackage}" targetProject="${mapper.targetProject}"/>
<!-- 配置接口位置
typetype="XMLMAPPER":接口和XML完全分离;所有方法都在XML中,接口用依赖Xml文件
targetPackage:生成Mapper文件存放的包名,可能会受到其他配置的影响。
targetProject:指定目标targetPackage的项目路径,可以用相对路径 -->
<javaClientGenerator targetPackage="${java.targetMapperPackage}" targetProject="${java.targetProject}"
type="XMLMAPPER"/>
<!-- table可以有多个,每个数据库中的表都可以写一个table,schema是数据库名,
tableName表示要匹配的数据库表,也可以在tableName属性中通过使用%通配符来匹配所有数据库表,只有匹配的表才会自动生成文件 -->
<!-- 配置数据库表 -->
<table schema="advert" tableName="ads_search_group_premium_kw">
<!-- generatedKey:用来指定自动生成的主键的属性。针对MySql,SQL Server等自增类型主键
indetity:设置为true时会被标记为indentity列,并且selectKey标签会被插入在Insert标签(order=AFTER)。
设置为false时selectKey会插入到Insert之前(oracal序列),默认为false. -->
<generatedKey column="kw_package_id" sqlStatement="Mysql" identity="true"/>
</table>
<!-- 生成用户的相关类 -->
<!-- <table schema="aitest_mini" tableName="hogwarts_test_user" domainObjectName="HogwartsTestUser" enableCountByExample="false" enableDeleteByExample="false"-->
<!-- enableSelectByExample="false" enableUpdateByExample="false" >-->
<!-- <generatedKey column="id" sqlStatement="Mysql" identity="true"/>-->
<!-- </table>-->
</context>
</generatorConfiguration>
复制代码
三,新增 config.properties 文件
# 数据库配置
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://10.52.46.11:33066
jdbc.username=mysql
jdbc.password=123456
# 通用Mapper配置
mapper.plugin=tk.mybatis.mapper.generator.MapperPlugin
mapper.Mapper=com.ceshiren.common.MySqlExtensionMapper
#entity类和实体类的位置
java.targetProject=src/main/java
#实体类的包名
java.targetPackage=com.ceshiren.entity
#实体类的根包名
java.rootClass=com.ceshiren.entity.BaseEntityNew
#mapperXML文件路径
mapper.targetPackage=mapper
#mapper.xml位置
mapper.targetProject=src/main/resources
#entity类的包名
java.targetMapperPackage=com.ceshiren
复制代码
四,新增对应报错的文件
MySqlExtensionMapper
package com.ceshiren.common;
import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MySqlExtensionMapper<T> extends Mapper<T>, MySqlMapper<T>, IdsMapper<T> {
}
复制代码
BaseEntityNew
package com.ceshiren.entity;
import java.io.Serializable;
public class BaseEntityNew implements Serializable {
private static final long serialVersionUID = 2054813493011812469L;
}
复制代码
五,执行插件语句,生成对应的文件
![](https://static001.geekbang.org/infoq/f6/f6594ad56a855dee6d78fbaed98d7f7b.png)
软件测试开发免费视频教程分享
![](https://static001.geekbang.org/infoq/5a/5a6f61ea4dd5ea36f4e8073d35d68c90.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
划线
评论
复制
发布于: 刚刚阅读数: 5
版权声明: 本文为 InfoQ 作者【测试人】的原创文章。
原文链接:【http://xie.infoq.cn/article/1ba692da3155135bf7fbf79bb】。文章转载请联系作者。
![用户头像](http://static001.geekbang.org/account/avatar/00/30/56/ef/e084b85e.jpg?x-oss-process=image/resize,w_200,h_200)
测试人
关注
专注于软件测试开发 2022-08-29 加入
霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284
评论