この文書は、今後 Doma 2 を開発していくにあたり、新規追加する機能について作者の考えを述べたものです。
- Doma は Annotation Processing Tool (apt) を利用した Java の Dao フレームワークである
- Doma 1 を Java 6 で開発してきたが、Java 8 への対応に伴い Doma 2 へメジャーバージョンアップする
- サポートする Java のバージョンは 8 以上とする
| /* | |
| * コア機能群 | |
| */ | |
| // バリデーションを表すインタフェース | |
| fun interface Validator<T, S> { | |
| fun execute(input: T): ValidationResult<S> | |
| } | |
| // バリデーションの結果(成功か失敗のどちらか)を表すインタフェース |
| 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 |
| @Dao | |
| public interface DeptDao { | |
| @MultiInsert(duplicateKeyType = DuplicateKeyType.UPDATE) | |
| int insertOnDuplicateKeyUpdate(List<Dept> entities); | |
| } | |
| ``` | |
| insert into DEPARTMENT as target ( | |
| DEPARTMENT_ID, | |
| DEPARTMENT_NO, |
| 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") |
| 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() { |
| 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> | |
| } |
| 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 |
| 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 |
| @KomapperEntity | |
| @KomapperTable("users") | |
| data class User( | |
| @KomapperId | |
| val id: String, | |
| val name: String, | |
| val age: Int | |
| ) | |
| @KomapperEntity |