はじめに
以下の書籍の第2部 Kotlinでのサーバーサイド開発 3 MyBatisの導入でつまづいたところをまとめています
説明が簡素的なためMybatisの導入から躓いたので、参考になればと思います
Mybatisの依存関係追加
まずは依存関係を追加するところです
id("com.arenagod.gradle.MybatisGenerator") version "1.4"
としていましたが、ビルドするとエラーがでてしまいます
In plugin 'com.arenagod.gradle.MybatisGenerator' type
'com.arenagod.gradle.MybatisGeneratorTask' property 'configFile'
is missing an input or output annotation.
調べたところ以下の記事を発見
代わりに以下を利用します
id("com.thinkimi.gradle.MybatisGenerator") version "2.4"
最終的には以下のようになりました
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("org.springframework.boot") version "3.0.1"
id("io.spring.dependency-management") version "1.1.0"
id("com.thinkimi.gradle.MybatisGenerator") version "2.4"
kotlin("jvm") version "1.7.22"
kotlin("plugin.spring") version "1.7.22"
}
group = "com.example"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_17
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.mybatis:mybatis:3.5.6")
implementation("org.mybatis.dynamic-sql:mybatis-dynamic-sql:1.2.1")
implementation("mysql:mysql-connector-java:8.0.23")
implementation("org.mybatis.generator:mybatis-generator-core:1.4.0")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "17"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
mybatisGenerator {
verbose = true
configFile = "/home/watanabejin/workspace/kotlin-server-side-chap4/src/main/resources/generatorConfig.xml"
}
mybatisGenerator
でエラーになるのですが、ダウンロードが済むとエラーが消えました(intellijが勝手にやってくれて時間解決しました)
また、configFileは絶対パスで指定することでうまく通りました
MyBatis Generatorでの生成
generatorConfig.xml
にmysql-connector-java
のパスを入れる必要があるのですが、.gradle
にファイルが見つかりませんでした
Intellijの外部ライブラリがディレクトリの下にあるのでそこを見るとわかります
そこからmysql-connctor-java
をみつけて、.jar
の絶対パスを右クリックでコピーして貼り付けることでうまくいきました
@MapperのDIが動かない
現在調査中です
一応解決はしていますが、原因はわかっていません
おわりに
軽く諦めかけていましたがうまく行ってよかったです。
個人的にはExposedを使いたいなと思いました。XMLがいろいろ書いてあってよくわかっていないです
参考