From d2c78b12aa4feccd9278471d3eb06fb455224da8 Mon Sep 17 00:00:00 2001 From: s-choi Date: Thu, 10 Sep 2026 15:48:32 +0900 Subject: [PATCH] =?UTF-8?q?[STYLE]=20repository=E3=81=AE=E7=84=A1=E9=A7=84?= =?UTF-8?q?=E3=81=AA=E6=94=B9=E8=A1=8C=E3=82=84=E3=82=B9=E3=83=9A=E3=83=BC?= =?UTF-8?q?=E3=82=B9=E3=81=AA=E3=81=A9=E3=81=AE=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/DepartmentRepository.java | 55 +++++--------- .../repository/EmployeeInfoRepository.java | 75 +++++++------------ .../infra/repository/EmployeeRepository.java | 26 +++---- 3 files changed, 55 insertions(+), 101 deletions(-) diff --git a/src/main/java/com/example/rhizome/app/infra/repository/DepartmentRepository.java b/src/main/java/com/example/rhizome/app/infra/repository/DepartmentRepository.java index cdb8877..b6ded3a 100644 --- a/src/main/java/com/example/rhizome/app/infra/repository/DepartmentRepository.java +++ b/src/main/java/com/example/rhizome/app/infra/repository/DepartmentRepository.java @@ -1,50 +1,31 @@ package com.example.rhizome.app.infra.repository; -import com.example.rhizome.app.infra.entity.DepartmentEntity; import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.stereotype.Repository; +import com.example.rhizome.app.infra.entity.DepartmentEntity; -/** - * Specification: - * 関数型インターフェースです。 - * JPAの一部として提供されていて、エンティティの情報を元に動的にクエリを生成し、DBからデータを取得します。 - * 使い方: - * toPredicate をOverrideして使います。 - * パラメータ: - * Root:ルートエンティティを指します。に指定したエンティティ(今回はDepartmentEntity)を用いてメンバにアクセスします。 - * CriteriaQuery<\?>:サブクエリを作成する際に使用します。※今回は使用しません - * CriteriaBuilder:条件式(Where句以降の条件)の部分のクエリを作るためのビルダーです。 - * 戻り値はクエリを格納しているPredicateオブジェクトとなります。 - */ @Repository -public interface DepartmentRepository extends JpaRepository, JpaSpecificationExecutor { +public interface DepartmentRepository + extends JpaRepository, JpaSpecificationExecutor { + static Specification idDepartmentEqual(Integer idDepartment) { + return idDepartment == null ? null + : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder + .equal(root.get("idDepartment"), idDepartment); + } - static Specification idDepartmentEqual(Integer idDepartment) { - return idDepartment == null ? - null : - // 戻り値の型 Specification にキャスト - (Specification) - // ラムダ式で記載しているが書いてあることは criteriaBuilder を使って Where句の後の "'idDepartment' = idDepartment(変数)" - // を作成している - (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get("idDepartment"), idDepartment); - } + static Specification nmDepartmentEqual(String nmDepartment) { + return (nmDepartment == null || nmDepartment.isEmpty()) ? null + : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder + .like(root.get("nmDepartment"), nmDepartment); + } - static Specification nmDepartmentEqual(String nmDepartment) { - return (nmDepartment == null || nmDepartment.isEmpty()) ? - null : - (Specification) - (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.like(root.get("nmDepartment"), nmDepartment); - } - - - static Specification nmDepartmentLike(String nmDepartment) { - return (nmDepartment == null || nmDepartment.isEmpty()) ? - null : - (Specification) - (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.like(root.get("nmDepartment"), "%" + nmDepartment + "%"); - } + static Specification nmDepartmentLike(String nmDepartment) { + return (nmDepartment == null || nmDepartment.isEmpty()) ? null + : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder + .like(root.get("nmDepartment"), "%" + nmDepartment + "%"); + } } diff --git a/src/main/java/com/example/rhizome/app/infra/repository/EmployeeInfoRepository.java b/src/main/java/com/example/rhizome/app/infra/repository/EmployeeInfoRepository.java index c2c8c5c..a32b4af 100644 --- a/src/main/java/com/example/rhizome/app/infra/repository/EmployeeInfoRepository.java +++ b/src/main/java/com/example/rhizome/app/infra/repository/EmployeeInfoRepository.java @@ -1,61 +1,42 @@ package com.example.rhizome.app.infra.repository; -import com.example.rhizome.app.infra.entity.EmployeeDepartmentEntity; import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.stereotype.Repository; -/** - * ワンポイント情報(ここで登場する関数型インターフェース Specification について解説します) - * Specification: - * 関数型インターフェースです。 - * JPAの一部として提供されていて、エンティティの情報を元に動的にクエリを生成し、DBからデータを取得します。 - * 使い方: - * toPredicate をOverrideして使います。 - * パラメータ: - * Root:ルートエンティティを指します。に指定したエンティティ(今回はDepartmentEntity)を用いてメンバにアクセスします。 - * CriteriaQuery<\?>:サブクエリを作成する際に使用します。※今回は使用しません - * CriteriaBuilder:条件式(Where句以降の条件)の部分のクエリを作るためのビルダーです。 - * 戻り値はクエリを格納しているPredicateオブジェクトとなります。 - */ +import com.example.rhizome.app.infra.entity.EmployeeDepartmentEntity; + @Repository -public interface EmployeeInfoRepository extends JpaRepository, JpaSpecificationExecutor { +public interface EmployeeInfoRepository + extends JpaRepository, JpaSpecificationExecutor { - static Specification idEmployeeEqual(Integer idEmployee) { - return idEmployee == null ? - null : - // 戻り値の型 Specification にキャスト - (Specification) - // ラムダ式で記載しているが書いてあることは criteriaBuilder を使って Where句の後の "'idEmployee' = idEmployee(変数)" - // を作成している - (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get("idEmployee"), idEmployee); - } + static Specification idEmployeeEqual(Integer idEmployee) { + return idEmployee == null ? null + : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder + .equal(root.get("idEmployee"), idEmployee); + } - static Specification nmEmployeeEqual(String nmEmployee) { - return (nmEmployee == null || nmEmployee.isEmpty()) ? - null : - (Specification) - (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.like(root.get("nmEmployee"), "%" + nmEmployee + "%"); - } + static Specification nmEmployeeEqual(String nmEmployee) { + return (nmEmployee == null || nmEmployee.isEmpty()) ? null + : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder + .like(root.get("nmEmployee"), "%" + nmEmployee + "%"); + } - static Specification knEmployeeEqual(String knEmployee) { - return (knEmployee == null || knEmployee.isEmpty()) ? - null : - (Specification) - (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.like(root.get("knEmployee"), "%" + knEmployee + "%"); - } + static Specification knEmployeeEqual(String knEmployee) { + return (knEmployee == null || knEmployee.isEmpty()) ? null + : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder + .like(root.get("knEmployee"), "%" + knEmployee + "%"); + } - static Specification mailAddressEqual(String mailAddress) { - return (mailAddress == null || mailAddress.isEmpty()) ? - null : - (Specification) - (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.like(root.get("mailAddress"), "%" + mailAddress + "%"); - } + static Specification mailAddressEqual(String mailAddress) { + return (mailAddress == null || mailAddress.isEmpty()) ? null + : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder + .like(root.get("mailAddress"), "%" + mailAddress + "%"); + } - static Specification idDepartmentEqual(Integer idDepartment) { - return (root, query, criteriaBuilder) -> - idDepartment == null ? null : - criteriaBuilder.equal(root.join("department").get("idDepartment"), idDepartment); - } + static Specification idDepartmentEqual(Integer idDepartment) { + return (root, query, criteriaBuilder) -> idDepartment == null ? null + : criteriaBuilder.equal(root.join("department").get("idDepartment"), idDepartment); + } } diff --git a/src/main/java/com/example/rhizome/app/infra/repository/EmployeeRepository.java b/src/main/java/com/example/rhizome/app/infra/repository/EmployeeRepository.java index 82d6f8e..f19ed76 100644 --- a/src/main/java/com/example/rhizome/app/infra/repository/EmployeeRepository.java +++ b/src/main/java/com/example/rhizome/app/infra/repository/EmployeeRepository.java @@ -1,28 +1,20 @@ package com.example.rhizome.app.infra.repository; -import com.example.rhizome.app.infra.entity.EmployeeEntity; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - import java.util.List; import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.example.rhizome.app.infra.entity.EmployeeEntity; + @Repository public interface EmployeeRepository extends JpaRepository { - Optional findByMailAddressAndPassword(String mailAddress, String password); + Optional findByMailAddressAndPassword(String mailAddress, String password); - /** - * メールアドレスで検索 - **/ - Optional findByMailAddress(String mail); + Optional findByMailAddress(String mail); - /** - * IDで検索 - **/ - Optional findByIdEmployee(Integer idEmployee); + Optional findByIdEmployee(Integer idEmployee); - /** - * IDで検索 - **/ - List findByIdDepartment(Integer idDepartment); + List findByIdDepartment(Integer idDepartment); }