跳到主要内容

11、Spring Data JPA 实战 - 复杂查询:方法命名规则查询

0. 规则

是对jpql查询,更加深入一层的封装
	我们只需要按照SpringDataJpa提供的方法名称规则定义方法,不需要再配置jpql语句,完成查询
		findBy开头:	代表查询
			对象中属性名称(首字母大写)
		含义:根据属性名称进行查询
方法名的约定:
	findBy :查询
		对象中的属性名(首字母大写) :查询的条件
			比如想要通过custName去查询便使用findByCustName:根据客户名称查询
				默认情况:使用等于的方式查询
				特殊的查询方式:

在springdataJpa的运行阶段,会根据方法名称进行解析findByCustName
	解析为:from xxx(实体类)   where  custName =
		其中:
			findBy   :from xxx(实体类)
			属性名称:where  custName =
默认情况:findBy + 属性名称(根据属性 名称进行完成匹配的查询=)
	如:findByCustName
特殊情况:findBy +属性名称+“查询方式(Like| isnull)”
	如“:findByCustNameL ike
多条件查询:findBy + 属性名 + "查询方式" + “多条件连接符(and | or)” + 属性名 +  "查询方式" 

1. 基本查询

在SpringDataJPA(9)中,1中的dao中添加如下方法(在这里我便不将所有的代码复制了)

public Customer findByCustName(String custName);

在SpringDataJPA(9)中,1中的测试类中添加如下方法(在这里我便不讲所有的代码复制了)

@Test
public void testFindByName(){

 
    Customer customer = customerDao.findByCustName("更新后的结果");
    System.out.println(customer);
}

运行结果:

 

2. 模糊查询

在SpringDataJPA(9)中,1中的dao中添加如下方法(在这里我便不将所有的代码复制了)

public List<Customer> findByCustNameLike(String custName);

在SpringDataJPA(9)中,1中的测试类中添加如下方法(在这里我便不讲所有的代码复制了)

@Test
public void testFindConditionLike(){

 
    List<Customer> list = customerDao.findByCustNameLike("延%");
    for (Customer customer:list){

 
        System.out.println(customer);
    }
}

运行结果:

 

3. 多条件查询

在SpringDataJPA(9)中,1中的dao中添加如下方法(在这里我便不将所有的代码复制了)

//使用客户名称模糊匹配和客户的industry精准匹配的查询
//这时候参数的顺序不能有误
public Customer findByCustNameLikeAndCustIndustry(String custName,String custIndustry);

在SpringDataJPA(9)中,1中的测试类中添加如下方法(在这里我便不讲所有的代码复制了)

@Test
public void testMore(){

 
    Customer name = customerDao.findByCustNameLikeAndCustIndustry("延%", "学");
    System.out.println(name);
}

运行结果: