SpringData JPA方法命名规则查询

倾然丶 夕夏残阳落幕 提交于 2020-03-18 01:55:34

顾名思义,方法命名规则查询就是根据方法的名字,就能创建查询。

只需要按照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);
    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!