[JAVA] Créer la variable de clause where dans Spring Data JPA

Objectif

--Afficher les résultats de la recherche sur l'écran de recherche de liste

supposition

procédure

Changer de référentiel

--Ajouter pour hériter *** JpaSpecificationExecutor *** dans l'interface du référentiel à rechercher

testRepository


@Repository
public interface TestRepository extends JpaRepository<TestEntity, Integer>, JpaSpecificationExecutor<TestEntity> {

}

Classe de préparation des spécifications

--Créer des conditions de recherche

testSpecifications


/**
	 *Si la catégorie de sujet existe dans la condition de recherche, ajoutez-la à la condition where
	 * @param anken_kbn
	 * @return
	 */
	public Specification<TestEntity> ankenKbnContains(String anken_kbn) {
		if (Util.stringIsEmpty(anken_kbn))
			return null;
		else
			return new Specification<TestEntity>() {
				@Override
				public Predicate toPredicate(Root<TestEntity> root, CriteriaQuery<?> query,
						CriteriaBuilder cb) {
					return cb.like(root.get("anken_kbn"), "%" + anken_kbn + "%");
				}
			};
	}

--Cette partie crée une recherche de correspondance partielle avec l'élément anken_kbn

Recherche à l'aide des spécifications dans Dao

testDao


@Override
	public List<TestEntity> findBySearchItem(TestRepository testRepository,TestForm form) {
		TestSpecifications spec = new TestSpecifications();
		List<TestEntity> result = TestRepository.findAll(Specifications.where(spec.ankenKbnContains(form.getAnken_kbn()))
				.and(spec.ankenNameContains(form.getAnken_name()))
				.and(spec.reaseCampanyNameContains(form.getRease_campany_name()))
				);
		System.out.println("Résultats de recherche");
		System.out.println(result);

		return result;
	}
Specifications.where(spec.ankenKbnContains(form.getAnken_kbn()))
				.and(spec.ankenNameContains(form.getAnken_name()))
				.and(spec.reaseCampanyNameContains(form.getRease_campany_name()))

--Comme mentionné ci-dessus, les conditions de recherche en chaîne avec et conditions, etc.

Utilisation à partir du contrôleur

--Dans testListForm, placez le résultat de la recherche sous forme de liste à renvoyer à l'écran --testDao est injecté --testRepository est injecté

testControleller


	@RequestMapping("/search")
	public ModelAndView search(@ModelAttribute("testListForm") TestListForm contractListForm,
			ModelAndView mav) {

		mav.setViewName("index");
		Iterable<TestEntity> testEntityList = testDao.findBySearchItem(testRepository, testListForm);
		
		System.out.println("Résultats de recherche");
		System.out.println(tstEntityList);
		
		mav.addObject("contractList", hdrEntityList);
		mav.addObject("contractListF", new TestListForm());
		return mav;

	}

c'est tout

--Création d'une clause where variable en tâtonnant «Est-ce une bonne façon d'écrire? Il y a peut-être une meilleure façon d'écrire que je n'ai pas.

Recommended Posts

Créer la variable de clause where dans Spring Data JPA
Existe en utilisant la spécification dans Spring Data JPA
Jusqu'à l'utilisation de Spring Data et JPA Part 2
Jusqu'à l'utilisation de Spring Data et JPA Part 1
Vérifiez le comportement de getOne, findById et des méthodes de requête avec Spring Boot + Spring Data JPA
[spring] Utilisons Spring Data JPA
[Spring Data JPA] La condition And peut-elle être utilisée dans la méthode de suppression implémentée automatiquement?
Spring Data JPA: écrivez une requête en Pure SQL dans @Query of Repository
[Comment installer Spring Data Jpa]
[Spring Data JPA] L'ID personnalisé est attribué dans une séquence unique au moment de l'enregistrement.
[jOOQ] Comment utiliser CASE WHEN dans la clause WHERE / AND / OR
Voir le comportement des mises à jour d'entités avec Spring Boot + Spring Data JPA
Sortie du journal Spring Data JPA SQL
Étapes pour rendre Spring Boot capable de faire référence à la valeur dans le fichier de propriétés
Spring Autowired est écrit dans le constructeur
OU rechercher avec la spécification Spring Data Jpa
Cache de support nul dans Spring Data Redis
Pour écrire des données de réponse directement dans Spring
Jackson ne peut pas sérialiser JSON hibernateLazyInitializer dans Spring Data JPA entraîne une erreur
Exemple de code pour le contrôle de la base de données par transaction déclarative avec Spring Boot + Spring Data JPA
Comment créer une combinaison unique de données dans la table intermédiaire des rails
[Order method] Définit l'ordre des données dans Rails
Spring Data JPA save select-insert n'est qu'une insertion
Référence mutuelle de l'entité de Spring Data JPA et ses notes
Mémo organisé dans la tête (Java - type de données)
Trier par Spring Data JPA (avec tri par clé composée)
Création d'un référentiel commun avec Spring Data JPA
Comment définir plusieurs orm.xml dans Spring4, JPA2.1
Afficher la tâche Gradle dans le projet Spring Boot
Spring Boot + Spring Data JPA À propos des jointures de table multiples