使用 MyBatisGenerator 进行 Model 和 Mapper 的创建
1. 目标
在创建SpringBoot的API时,使用MyBatis从数据库中获取数据时,需要创建Model和Mapper,这是一种常见的方法。然而,我会介绍一种使用MyBatisGenerator自动生成代码的方法。
環境:环境
Eclipse(版本:2022-12(4.26.0))
Java(版本:17)
Spring Boot 3.1.1
Gradle – Groovy
MySQL(版本:8.0.33)
事前准备
(1) 准备数据库。
※本次需要事先安装Mysql(mysql Ver 8.0.33 for macos10.15 on x86_64 Homebrew)并且使用它。
Last login: Sun Aug 6 12:02:12 on ttys000
xxxxx> mysql --version
mysql Ver 8.0.33 for macos10.15 on x86_64 (Homebrew)
(2)在数据库内创建模式并准备表格。
只需有定义即可,不关心表的具体内容。(在MySQL中创建后,通过数据库操作工具访问,表已创建完成)
创建一个Spring Boot项目。
设定”build.gradle”文件的内容。
(以下是本次预先验证成功的内容)
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.2'
id 'io.spring.dependency-management' version '1.1.2'
}
group = 'com'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// 依存性を追加
implementation 'org.openapitools:jackson-databind-nullable:0.2.1'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.9'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.0'
runtimeOnly 'com.mysql:mysql-connector-j'
}
tasks.named('test') {
useJUnitPlatform()
}
4. 制作时
只需要一个选项
① 添加”mybatis-generator-config.xml”。
(※可以直接使用,之后根据需要进行编辑。)
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="demoTables" targetRuntime="MyBatis3">
<!-- DB接続設定 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/【スキーマ名】"
userId="【スキーマのユーザID】"
password="【スキーマのパスワード】"
<property name="nullCatalogMeansCurrent" value="true" />
</jdbcConnection>
<!-- Select結果がマッピングされる、Javaモデルの出力設定 -->
<javaModelGenerator targetPackage="【作成する任意パス】1" targetProject="mybatisTest/src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- SQLを定義したXMLファイルの出力設定 -->
<sqlMapGenerator targetPackage="【作成する任意パス】2" targetProject="mybatisTest/src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- Mapperインターフェースの出力設定 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="【作成する任意パス】3" targetProject="mybatisTest/src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 自動生成するテーブルの設定 -->
<!-- ここを設定することでCRUDのつくりを操作できる -->
<table tableName="%"
enableInsert="true"
enableSelectByPrimaryKey="true"
enableUpdateByPrimaryKey="true"
enableDeleteByPrimaryKey="true"
enableSelectByExample="true"
enableUpdateByExample="true"
enableDeleteByExample="true"
enableCountByExample="true"
selectByPrimaryKeyQueryId="true"
selectByExampleQueryId="true"
modelType="flat">
</table>
</context>
</generatorConfiguration>
通过与数据库建立连接,设置以获取的数据内容可以创建Model和Mapper。
如果在执行之后在控制台上显示如下内容,则表示MyBatisGenerator执行成功。
MyBatis Generator Started...
ビルドファイル: /Users/xxxxx/Documents/GitHub/.metadata/.plugins/org.mybatis.generator.eclipse.ui/.generatedAntScripts/mybatisTest-mybatis-generator-config.xml.xml
ビルド成功
MyBatis Generator Finished
4. 执行结果
确认刚刚生成的层次结构。
确认 Mapper
确认模型
5. 概括一下
可以通过继承在这里实现的内容来轻松地进行使用MyBatis开发。
这里不详细讨论使用方法,但是你可以通过更改层次结构或稍作修改,成功地将从MyBatis获取的结果存储到模型中。
在这个过程中,我们使用了MapStruct,所以下次将写一篇关于MapStruct的文章。