Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

स्प्रिंग बूट जेपीए:समान पैरामीटर (जेपीक्यूएल) के लिए एकाधिक मान पास करना

क्योंकि @Query JPQL का उपयोग करके संकलन समय पर तय करने की आवश्यकता है या यहां तक ​​​​कि मूल क्वेरी इस तरह की चीजों को विशेष रूप से सुरक्षित तरीके से लागू करने के लिए कठिन बना देगी।

इसलिए मुझे एहसास हुआ कि आप JPQL समाधान के बाद हैं लेकिन यह सीखने और Specification का लाभ उठाने का एक शानदार अवसर है। इंटरफ़ेस और जेपीए का CriteriaQuery. ठीक इसी के लिए है।

निम्नलिखित भंडार पर एक नज़र डालें:

public interface Table1Repository            // to use specifications in queries 
        extends JpaRepository<Table1, Long>, JpaSpecificationExecutor<Table1> {

    @SuppressWarnings("serial")
    public static Specification<Table1> multiLikeColumn1(List<String> likePatterns) {
        return new Specification<Table1>() {
            @Override
            public Predicate toPredicate(Root<Table1> root, CriteriaQuery<?> query,
                                            CriteriaBuilder criteriaBuilder) {
                Path<String> column1 = root.get("column1");
                // create a Predicate for each "column1 like 'xy%az%' you need
                List<Predicate> predicates = likePatterns.stream()
                    .map(likePattern -> criteriaBuilder.like(column1, likePattern))
                    .collect(Collectors.toList());
                // then "concatenate" list of likes with "OR"
                return criteriaBuilder.or(predicates.toArray(new Predicate[]{}));
            }
        };
    }

}

यह थोड़ा जटिल लग सकता है लेकिन वास्तव में ऐसा नहीं है जब आप इससे परिचित होते हैं। उपयोग सरल है, जैसे:

@Resource
private Table1Repository repo;
repo.findAll(Table1Repository.multiLikeColumn1(Arrays.asList("%X%","%Z%")))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL VARCHAR(255) UTF8 कुंजी के लिए बहुत लंबा है, लेकिन अधिकतम लंबाई 1000 बाइट्स है

  2. क्या मैं सशर्त रूप से एक विशिष्टता बाधा लागू कर सकता हूं?

  3. क्या मुझे डेटाबेस का उपयोग करने वाले प्रत्येक फ़ंक्शन में एक php mysql कनेक्शन की आवश्यकता है?

  4. Django में डेटा को असामान्य करने का सबसे अच्छा तरीका?

  5. MYSQL में अनधिकृत उपयोगकर्ता का क्या अर्थ है?