Skip to content

Instantly share code, notes, and snippets.

View nakamura-to's full-sized avatar

Toshihiro Nakamura nakamura-to

View GitHub Profile
@nakamura-to
nakamura-to / KovaEssence.kt
Last active December 15, 2025 09:51
Kova( https://github.com/komapper/kova )のエッセンスを簡易的なコードで示したものです
/*
* コア機能群
*/
// バリデーションを表すインタフェース
fun interface Validator<T, S> {
fun execute(input: T): ValidationResult<S>
}
// バリデーションの結果(成功か失敗のどちらか)を表すインタフェース
@nakamura-to
nakamura-to / ReserveTourInput.kt
Last active December 13, 2025 13:37
Kovaを使ってParse don't Validateの実現
package example
import org.komapper.extension.validator.Kova
import org.komapper.extension.validator.ObjectSchema
import org.komapper.extension.validator.ValidationResult
import org.komapper.extension.validator.factory.generateFactory
import org.komapper.extension.validator.factory.tryCreate
import org.komapper.extension.validator.isInt
import org.komapper.extension.validator.isNullOr
import org.komapper.extension.validator.isSuccess
@nakamura-to
nakamura-to / Script.java
Created August 8, 2024 23:00
Domaの複数行追加でonDuplicateKeyUpdate
@Dao
public interface DeptDao {
@MultiInsert(duplicateKeyType = DuplicateKeyType.UPDATE)
int insertOnDuplicateKeyUpdate(List<Dept> entities);
}
```
insert into DEPARTMENT as target (
DEPARTMENT_ID,
DEPARTMENT_NO,
@nakamura-to
nakamura-to / Application.kt
Last active July 27, 2024 12:58
Komapperで複数エンティティに共通のプロパティを使ってクエリを組み立てる方法 (SELECTだけでなくUPDATEやDELETEにも対応)
package org.komapper.quickstart
import org.komapper.core.dsl.Meta
import org.komapper.core.dsl.QueryDsl
import org.komapper.jdbc.JdbcDatabase
import java.time.LocalDateTime
fun main() {
val database = JdbcDatabase("jdbc:h2:mem:quickstart;DB_CLOSE_DELAY=-1")
@nakamura-to
nakamura-to / Application.kt
Created July 27, 2024 03:38
Komapperで複数エンティティに共通のプロパティを使ってクエリを組み立てる方法
package org.komapper.quickstart
import org.komapper.core.dsl.Meta
import org.komapper.core.dsl.QueryDsl
import org.komapper.core.dsl.expression.WhereDeclaration
import org.komapper.core.dsl.scope.WhereScope
import org.komapper.jdbc.JdbcDatabase
import java.time.LocalDateTime
fun main() {
@nakamura-to
nakamura-to / Application.kt
Created July 21, 2024 13:55
KomapperのEntityMetamodelのためにインタフェースを定義する案
import org.komapper.annotation.*
import org.komapper.core.dsl.expression.PropertyExpression
import org.komapper.core.dsl.expression.WhereDeclaration
import java.time.LocalDateTime
// EntityMetamodelのためのインタフェース
interface BiTemporal {
val validFrom: PropertyExpression<LocalDateTime, LocalDateTime>
val validTo: PropertyExpression<LocalDateTime, LocalDateTime>
}
@nakamura-to
nakamura-to / Application.kt
Created July 21, 2024 07:41
Komapperにおける複数クエリ共通の検索条件の定義方法 2
package org.komapper.quickstart
import org.komapper.annotation.*
import org.komapper.core.dsl.Meta
import org.komapper.core.dsl.QueryDsl
import org.komapper.core.dsl.expression.PropertyExpression
import org.komapper.core.dsl.expression.WhereDeclaration
import org.komapper.core.dsl.metamodel.EntityMetamodel
import org.komapper.jdbc.JdbcDatabase
import java.time.LocalDateTime
@nakamura-to
nakamura-to / Application.kt
Last active July 21, 2024 06:55
Komapperにおける複数クエリ共通の検索条件の定義方法
package org.komapper.quickstart
import org.komapper.annotation.*
import org.komapper.core.dsl.Meta
import org.komapper.core.dsl.QueryDsl
import org.komapper.core.dsl.expression.PropertyExpression
import org.komapper.core.dsl.expression.WhereDeclaration
import org.komapper.jdbc.JdbcDatabase
import java.time.LocalDateTime
@nakamura-to
nakamura-to / entities.kt
Last active July 20, 2024 01:23
クエリの比較 - Komapper版
@KomapperEntity
@KomapperTable("users")
data class User(
@KomapperId
val id: String,
val name: String,
val age: Int
)
@KomapperEntity
@nakamura-to
nakamura-to / doma2_draft.md
Last active February 4, 2023 21:28
Doma 2 素案

Doma 2 素案

この文書は、今後 Doma 2 を開発していくにあたり、新規追加する機能について作者の考えを述べたものです。

前提

  • Doma は Annotation Processing Tool (apt) を利用した Java の Dao フレームワークである
  • Doma 1 を Java 6 で開発してきたが、Java 8 への対応に伴い Doma 2 へメジャーバージョンアップする
  • サポートする Java のバージョンは 8 以上とする