0
0

【Spring Data JPA】Database操作③

Posted at

↓の続き

決まったキーワードを組み合わせることで目的を満たすクエリが自動で生成されます
まず初めに目的を設定します
上記はレコードの取得のためにfindByというキーワードを使用しました
その他以下のキーワードがあります

キーワード メソッドサンプル 説明
findBy findByName(String name) 条件に一致するレコードの取得
existsBy existsByName(String name) 条件に一致するレコードが存在するか(T/F)
countBy countByName(String name) 条件に一致するレコード数
deleteBy deleteByName(String name) 条件に一致するレコードの削除

次に条件を設定します
上記では、findByNameとすることで「nameと一致する」という条件を設定しています
等価条件以外は、以下のキーワードを用いて設定できます
複数フィールドを条件とする場合は、メソッドで指定したフィールド順序とパラメーターの順序を同じにします

キーワード メソッドサンプル クエリ
Not findByNameNot(String name) ... where name <> ?1
And findByNameAndAge(String name, int age) ... where name = ?1 and age = ?2
Or findByNameOrAge(String name, int age) ... where name = ?1 or age = ?2
LessThan findByAgeLessThan(int age) ... where age < ?1
LessThanEqual findByAgeLessThanEqual(int age) ... where age <= ?1
GreaterThan findByAgeGreaterThan(int age) ... where age > ?1
GreaterThanEqual findByAgeGreaterThanEqual(int age) ... where age <= ?1
Between findByAgeBetween(int min, int max) ... where age between ?1 and ?2
IsNull findByNameIsNull() ... where name is null
IsNotNull findByNameIsNotNull() ... where name is not null
In findByNameIn(String... name) ... where name in ?1
NotIn findByNameNotIn(String... name) ... where name not in ?1
Like findByNameLike(String name) ... where name like ?1
NotLike findByNameNotLike(String name) ... wehre name not like ?1
StartingWith findByNameStartingWith(String name) ... where name like ?1%
EndingWith findByNameEndingWith(String name) ... where name like %?1
Containing findByNameContaining(String name) ... where name like %?1%
True findByActiveTrue() ... where active = true
False findByActiveFalse() ... where active = false
IgnoreCase findByIdIgnoreCase(String id) ... where UPPER(id) = UPPER(?1)

最後に取得する結果に対して手を加えます
以下のキーワードを使用することで、並び替えや取得レコード数を指定することができます

キーワード メソッドサンプル 説明
OrderBy findByNameOrderByAgeDesc(String name) レコード順序の指定
Top, First findTop3ByName(String name) 指定した数だけ上位のレコードを取得(Top、Firstは同義)
Distinct findDistinctByName(String name) 同一結果のレコードの集約
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0