SpringData JPA复杂查询三:方法命名规则查询

SpringData JPA 方法命名规则查询

按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写。框架在进行方法名解析时,会先把方法名多余的前缀截取掉,然后对剩下部分进行解析。

测试一:测试方法命名规则的 查询(查询方式 精准(默认)):


      findBy 对象中的属性名(首字母大写) :

      在springdataJpa的运行阶段
       例:public Customer findByCustName(String custName);

              public   A     findBy    B (C)
    Customer=A(所返回的表的映射类)     CustName=B(大写属性名第一个字母)  String                 custName=C(查询所传递的值)
    select * from A where B=C;

public Customer findByCustName(String custName);

//测试方法命名规则的查询
    @Test
    public void testFindByCustName()
    {

        Customer customer= customerDao.findByCustName("迅腾软件公司");
        System.out.println(customer);
    }

 

测试二:测试方法命名规则的 查询(查询方式 Like):

   方法名的约定
   条件查询   findByCustNameLike=findBy+(大写属性名第一个字母)+"查询方式"(Like|isnull)

 public List findByCustNameLike(String custName);

//测试方法命名规则的模糊查询
//findByCustNameLike findBy+大写属性名+Like
@Test
public void testFindByCastNameLike()
{

    List list= customerDao.findByCustNameLike("传智播客%");

    for (Customer customer:list ){

        System.out.println(customer);

    }

}

 

测试三:测试方法命名规则的多条件查询(查询方式 Like+精准):

方法名的约定

多条件查询: 

findByCustNameLike=findBy+(大写属性名第一个字母)+查询方式+"多条件的连接符(and|or)" + 属性名 + "查询方式"

使用客户模糊匹配和客户所属行业精准匹配的查询

public Customer findByCustNameLikeAndCustIndustry(String custNam,String custIndustry );
  //测试方法命名规则的多条件查询
    //findByCustNameLike findBy+大写属性名+查询方式(Like)+"多条件的连接符(and|or)" + 属性名 + "查询方式"
    @Test
    public void testFindByCustNameLikeAndCustIndustry()
    {
        Customer customer= customerDao.findByCustNameLikeAndCustIndustry("迅腾软件公司%","xt教育");
        System.out.println(customer);


    }

具体的关键字,使用方法和生产成SQL如下表所示:

关键字 方法命名 sql where字句
And findByNameAndPwd where name= ? and pwd =?
Or findByNameOrSex where name= ? or sex=?
Is,Equals findById,findByIdEquals where id= ?
Between findByIdBetween where id between ? and ?
LessThan findByIdLessThan where id < ?
LessThanEquals findByIdLessThanEquals where id <= ?
GreaterThan findByIdGreaterThan where id > ?
GreaterThanEqual findByAgeGreaterThanEqual where age >= ?
After findByIdAfter where id > ?
Before findByIdBefore where id < ?
IsNull findByNameIsNull where name is null
isNotNull,NotNull findByNameNotNull where name is not null
Like findByNameLike where name like ?
NotLike findByNameNotLike where name not like ?

StartingWith

findByNameStartingWith where name like '?%'
EndingWith findByNameEndingWith where name like '%?'
Containing findByNameContaining where name like '%?%'
OrderBy findByIdOrderByXDesc where id=? order by x desc
Not findByNameNot where name <> ?
In findByIdIn(Collection c) where id in (?)
NotIn findByIdNotIn(Collection c) where id not  in (?)
True

findByAaaTue

where aaa = true
False findByAaaFalse where aaa = false
IgnoreCase findByNameIgnoreCase where UPPER(name)=UPPER(?)
top findTop100 top 10/where ROWNUM <=10

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(章标签:SpringData)