写点什么

软件测试学习笔记丨 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


二,新增 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.Driverjdbc.url=jdbc:mysql://10.52.46.11:33066jdbc.username=mysqljdbc.password=123456
# 通用Mapper配置mapper.plugin=tk.mybatis.mapper.generator.MapperPluginmapper.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;}
复制代码

五,执行插件语句,生成对应的文件


软件测试开发免费视频教程分享


发布于: 刚刚阅读数: 5
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试学习笔记丨Spring Boot 自动生成数据库相关代码模版_软件测试_测试人_InfoQ写作社区