Open2

DOMA2 x Kotlin x SpringBoot でCriteria APIを使う

ふじしろふじしろ

はじめかた

  1. Configを使えるようにしておく(依存注入:DI)
import org.seasar.doma.jdbc.Config
...
class XxxService(
  private val config: Config
) {
  ...
}
  1. エンティティに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(
...
)
  1. KEntityqlやKNativeSqlを定義する
val entityql = KEntityql(config)
val nativeSql = KNativeSql(config)

※1でConfigを宣言していないとここでエラー

  1. クエリで扱うためのエンティティを定義する
val e = Employee_()
// val 変数 = <エンティティ名>_()

※2でmetamodel属性を付与しておくことでEmployee_()Employeeエンティティと自動で紐づく。この2の作業がないとここでもエラーが発生する。

  1. 処理を記述する
    以下公式のサンプルコード
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()