Open2
DOMA2 x Kotlin x SpringBoot でCriteria APIを使う
参考
DOMA2公式:Criteria API
DOMA2公式:Kotlin Support
Qiita:Kotlin Criteria-Apiチートシート
はじめかた
- Configを使えるようにしておく(依存注入:DI)
import org.seasar.doma.jdbc.Config
...
class XxxService(
private val config: Config
) {
...
}
- エンティティにmetamodel属性を追加する(これによりBootRun時にオブジェクトが生成される)
import org.seasar.doma.Entity
import org.seasar.doma.Metamodel
import org.seasar.doma.Table
@Entity(immutable = true, metamodel = Metamodel())
@Table(name = "xxxx")
data class xxx constructor(
...
)
- KEntityqlやKNativeSqlを定義する
val entityql = KEntityql(config)
val nativeSql = KNativeSql(config)
※1でConfigを宣言していないとここでエラー
- クエリで扱うためのエンティティを定義する
val e = Employee_()
// val 変数 = <エンティティ名>_()
※2でmetamodel属性を付与しておくことでEmployee_()
がEmployee
エンティティと自動で紐づく。この2の作業がないとここでもエラーが発生する。
- 処理を記述する
以下公式のサンプルコード
val entityql = KEntityql(config)
val e = Employee_()
val list = entityql
.from(e)
.where {
eq(e.departmentId, 2)
isNotNull(e.managerId)
or {
gt(e.salary, Salary("1000"))
lt(e.salary, Salary("2000"))
}
}
.fetch()