顾名思义,方法命名规则查询就是根据方法的名字,就能创建查询。
只需要按照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);
}
}
来源:https://www.cnblogs.com/roadlandscape/p/12375059.html