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); }