SpringData JPA方法命名規則查詢


顧名思義,方法命名規則查詢就是根據方法的名字,就能創建查詢。

只需要按照Spring Data JPA提供的方法命名規則定義方法的名稱,就可以完成查詢工作。

Spring Data JPA在程序執行的時候會根據方法名稱進行解析,並自動生成查詢語句進行查詢

按照Spring Data JPA 定義的規則,查詢方法以findBy開頭,涉及條件查詢時,條件的屬性用條件關鍵字連接,

要注意的是:條件屬性首字母需大寫。框架在進行方法名解析時,會先把方法名多余的前綴截取掉,然后對剩下部分進行解析。

//方法命名方式查詢(根據客戶名稱查詢客戶)
public Customer findByCustName(String custName);

具體的關鍵字,使用方法和生產成SQL如下表所示:

/**
 * 客戶持久層接口
 * JpaRepository<實體類類型,主鍵類型>:用來完成基本CRUD操作
 * JpaSpecificationExecutor<實體類類型>:用於復雜查詢(分頁等查詢操作)
 */
public interface CustomerDao extends JpaRepository<Customer, Long>, JpaSpecificationExecutor<Customer> {
    /**
     * JPA方法命名規則查詢
     *      根據客戶名稱查詢
     */
    Customer findByCustName(String custName);

    /**
     * 根據客戶名稱模糊查詢
     * @param custName
     * @return
     */
    List<Customer> findByCustNameLike(String custName);

    /**
     * 使用客戶名稱模糊匹配和客戶所屬行業精准匹配的查詢
     */
    Customer findByCustNameLikeAndCustIndustry(String custName,String custIndustry);
}

測試:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class JpqlTest {
    /**
     * JPA方法命名規則查詢
     */

    @Test
    public void testFindByCustName() {
        Customer c = customerDao.findByCustName("小明");
        System.out.println(c);
    }

    @Test
    public void testFindByCustNameLike() {
        List<Customer> list = customerDao.findByCustNameLike("小%");
        for (Customer customer : list) {
            System.out.println(customer);
        }
    }

    @Test
    public void testFindByCustNameLikeAndCustIndustry() {
        Customer c = customerDao.findByCustNameLikeAndCustIndustry("小%", "教育");
        System.out.println(c);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM