プロジェクト準備
プロジェクトの作成と準備は以下のSpring BootとJPAでMySQLを操作した記事を参考にする。
コード作成・実装
テーブルに対応するJPAのエンティティクラスが以下のBook.javaのようにあったとき、この中から特定のカラムとして例えばbookId, titleだけを取り出したい場合、以下に示すBookIdAndTile.javaのようなinterfaceクラスで中にget<カラム名>で取得したいカラムを指定したクラスを作る。
Book.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@Data @AllArgsConstructor @NoArgsConstructor @Entity public class Book extends Auditable<String> { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer bookId; private String title; private String description; @Column(nullable = false, columnDefinition = "tinyint(1) default 0") private boolean deleteFlag; } |
BookIdAndTitle.java
1 2 3 4 |
public interface BookIdAndTitle { Integer getBook_id(); //テーブルのカラム名にアンダーバーが入っていたらこのように書かないといけない String getTitle(); } |
BookIdAndTitle.javaをJPARepositoryのselectで使うには以下のように書く。
BookRepository.java
1 2 3 4 5 |
@Repository public interface BookRepository extends JpaRepository<Book, Integer> { @Query(nativeQuery = true, value = "select b.book_id, b.title from book b where b.book_id = ?1") BookIdAndTitle findBookIdAndTitleByBookId(Integer id); } |
これでBookRepository.javaのfindBookIdAndTitleByBookIdメソッドが呼ばれた時にbookIdとtitleのみがMySQLからselectされ取得できる。
参考
Spring Data JPA - Reference Documentation
コメント