カテゴリ: Spring 更新日: 2026/02/14

SpringDataJPAのJPAクエリメソッド「In」の使い方を完全ガイド!初心者向け解説

SpringDataJPAのクエリメソッド(In)
SpringDataJPAのクエリメソッド(In)

先生と生徒の会話形式で理解しよう

生徒

「SpringDataJPAで、複数の値に一致するデータを検索したい場合、どうすればいいですか?」

先生

「その場合は、Inを使うと効率的に検索できますよ!」

生徒

「具体的にはどのように書けばいいですか?」

先生

「それでは、基本的な使い方を見ていきましょう!」

1. Inとは?

1. Inとは?
1. Inとは?

SpringDataJPAのクエリメソッドInは、指定した複数の値に一致するデータを検索するために使用します。 例えば、「特定の年齢のユーザーを一括で取得したい」といったシナリオで活用されます。

findByAgeInを使用すると、リストやコレクションで渡した値に基づいて検索結果を返すことができます。 Inは複数の条件を効率的に処理する際に便利です。

2. クエリメソッドの基本的な書き方

2. クエリメソッドの基本的な書き方
2. クエリメソッドの基本的な書き方

以下は、Inを使用した基本的なクエリメソッドの例です。


public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByAgeIn(Collection<Integer> ages);
}

この例では、agesに含まれる年齢と一致するユーザーを取得します。 Collectionを渡すことで、複数の条件を簡単に指定できます。

3. JPQLでの動作イメージ

3. JPQLでの動作イメージ
3. JPQLでの動作イメージ

上記のクエリメソッドは、以下のようなJPQLに変換されます。


SELECT u 
FROM User u 
WHERE u.age IN ?1

このJPQLでは、ageが指定された値のいずれかに一致するレコードを検索します。 データベース内のIN句に相当する動作をします。

4. 実際の使い方例

4. 実際の使い方例
4. 実際の使い方例

以下は、findByAgeInをサービス層で使用する具体例です。


@Service
public class UserService {
    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public List<User> findUsersByAges(Collection<Integer> ages) {
        return userRepository.findByAgeIn(ages);
    }
}

このコードでは、指定された年齢リストに一致するユーザーを取得します。 例えば、findUsersByAges(List.of(25, 30, 35))を実行すると、25歳、30歳、35歳のユーザーが検索されます。

5. Inを使うときの注意点

5. Inを使うときの注意点
5. Inを使うときの注意点

Inを使用する際には、以下の点に注意してください。

  • コレクションが空の場合、結果は常に空になります。事前にコレクションの内容を確認してください。
  • 大規模なデータセットを検索する場合、パフォーマンスに注意が必要です。インデックスを適切に設定しましょう。
  • 指定するコレクションには、適切なデータ型を使用してください(例えば、IntegerString)。

これらの注意点を理解することで、効率的にInを活用することができます。

6.まとめ

6.まとめ
6.まとめ

この記事では、SpringDataJPAのクエリメソッドInを使った複数値検索について解説しました。 Inメソッドは、リストやコレクションに基づいて条件を指定し、該当するデータを効率的に取得するのに役立ちます。 クエリメソッドの名前を適切に設計することで、複雑なSQL文を書くことなく、データ検索が可能です。 また、JPQL変換の仕組みや使用例を通じて、実際の実装イメージが掴めたのではないでしょうか? 注意点としては、コレクションが空の場合の結果確認や、大規模データセットに対するパフォーマンスの最適化があります。

以下は、簡単なコード例とその実行結果を示したものです。


@Service
public class DemoService {
    private final UserRepository userRepository;

    public DemoService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void executeDemo() {
        List<Integer> ages = List.of(20, 25, 30);
        List<User> users = userRepository.findByAgeIn(ages);
        users.forEach(user -> System.out.println(user.getName() + " - " + user.getAge()));
    }
}

John - 20
Alice - 25
Bob - 30

このコードでは、20歳、25歳、30歳のユーザーが正しく取得され、出力されます。Inの柔軟性と効率性を体感できるシンプルな例です。

先生と生徒の振り返り会話

生徒

「今回Inを使って複数の条件を検索する方法が理解できました!」

先生

「良かったです。複数条件を効率的に指定できるのがInの特徴ですね。」

生徒

「でも、条件が多すぎるとパフォーマンスが落ちることもあるんですよね?」

先生

「その通りです。インデックスを適切に設定したり、クエリの実行結果を検証することが重要です。」

生徒

「理解しました!次回のプロジェクトで早速使ってみます!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Spring Data JPAのクエリメソッド「In」とは、具体的にどのような機能を持つメソッドなのですか?初心者の学習のポイントを教えてください。

Spring Data JPAにおけるクエリメソッドの「In」は、データベースに対して特定のカラムの値が、指定した複数の候補値のいずれかに一致するデータを一括で検索・取得するための非常に便利な機能です。通常、Javaのプログラミングでデータベースから特定の条件でデータを取得する際はSQLを記述する必要がありますが、Spring Data JPAではリポジトリのインターフェースに定義されたメソッド名から自動的にクエリを生成します。例えば、特定のIDリストに合致するユーザー情報や、特定の年齢層に該当するレコードを一度の処理で取得したい場合に、この「In」キーワードを活用することで、コードの記述量を大幅に減らし、可読性の高い実装が可能になります。開発現場では非常によく使われる標準的な機能なので、基本的な使い方をマスターしておくことはJavaエンジニアとしての必須スキルと言えるでしょう。

Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。

Spring Framework超入門をAmazonで見る

※ Amazon広告リンク

関連記事:
カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「NotIn」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「In」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Spring
Spring Bootの設定・プロパティ・プロファイルの外部化優先順位を完全解説!初心者にもわかる設定ファイルの読み込み順
新規投稿
New4
Spring
SpringDataJPAのJPAクエリメソッド「Not」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.3
Java&Spring記事人気No3
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.4
Java&Spring記事人気No4
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.5
Java&Spring記事人気No5
Spring
SpringのModelクラスの使い方を完全ガイド!初心者でも安心
No.6
Java&Spring記事人気No6
Java
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.7
Java&Spring記事人気No7
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.8
Java&Spring記事人気No8
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク