Spring Bootで指定したカラムを照会の方法

Spring BootではSpring Data JPAを使用してクエリを実行し、返されるフィールドを指定できます。

まず、あなたのプロジェクトにSpring Data JPAの依存関係が追加されていることを確認してください。pom.xmlに以下の依存関係を追加してください。

<dependencies>
  <!-- 其他依赖 -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
  </dependency>
</dependencies>

ちなみに、@Queryアノテーションで検索メソッドをエンティティクラスに書くと、JPQL(Java Persistence Query Language)文を使用して検索するフィールドを指定できます。

以下に例を示します。

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

public interface UserRepository extends JpaRepository<User, Long> {
  @Query("SELECT u.firstName, u.lastName FROM User u WHERE u.id = :id")
  Object findNameById(Long id);
}

上記の例では、Userはエンティティクラス、UserRepositoryはJpaRepositoryインターフェースを継承したインターフェースです。findNameByIdメソッドは@Queryアノテーションを使用してクエリステートメントを指定し、このクエリステートメントはfirstNameとlastNameフィールドのみを返します。

最後に、UserRepositoryインターフェイス経由でクエリメソッドを呼び出すサービスに統合します。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
  private final UserRepository userRepository;

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

  public Object findNameById(Long id) {
    return userRepository.findNameById(id);
  }
}

上記のサンプルでは、UserServiceクラスは@Autowiredアノテーションを利用してUserRepositoryインスタンスを自動注入しています。その上で、findNameByIdメソッドを呼び出すことで指定したフィールドを照会することができます。

注意、クエリ結果は Object オブジェクトとして返還されるため、必要に応じて型変換を行います。複数のフィールドを返す必要がある場合は、クエリ結果を格納するためにカスタムの DTO (Data Transfer Object) クラスを使用します。

bannerAds