简单条件查询
•
简单条件查询
:
查询
某一个实体类或者集合
•
按照
Spring
D
ata
的规范
,
查询方法
以
find | read | get
开头,
涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性以首字母 大写 。
涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性以首字母 大写 。
•
例如
:定义一
个
Entity
实体
类
classUser {
private String firstName ;
private String lastName ;
}
使用 And 条件连接时,应这样写:
findByLastNameAndFirstName (String lastName,String firstName );
条件的属性名称与个数要与参数的位置与个数一一对应
classUser {
private String firstName ;
private String lastName ;
}
使用 And 条件连接时,应这样写:
findByLastNameAndFirstName (String lastName,String firstName );
条件的属性名称与个数要与参数的位置与个数一一对应
支持的关键字
直接在接口中定义查询方法,如果是符合规范的,可以不用写实现,目前支持的关键字写法如下:
查询方法解析流程
•
假如创建如下的查询:
findBy
UserDepUuid
()
,框架在解析该方法时,首先剔除
findBy
,然后对剩下的属性进行解析,假设查询实体为
Doc
–
先
判断
userDepUuid
(根据
POJO
规范,首字母变为小写)是否为查询实体的一个属性,如果是,则表示根据该属性进行查询;如果没有该属性,继续第二步;
–
从
右往左截取第一个大写字母开头的
字符串
(
此处
为
Uuid
)
,
然后检查剩下的字符串是否为查询实体的一个属性,如果是,则表示根据该属性进行查询;如果没有该属性,则重复第二步,继续从右往左截取;最后
假设
user
为
查询实体的一个属性;
–
接着
处理剩下部分(
DepUuid
),先判断
user
所对应的类型是否有
depUuid
属性,如果有,则表示该方法最终是根据“
Doc.user.depUuid
”
的取值进行查询;否则继续按照步骤
2
的规则从右往左截取,最终表示根据“
Doc.user.dep.uuid
”
的值进行查询。
–
可能
会存在一种特殊情况,比如
Doc
包含一个
user
的属性,也有一个
userDep
属性,此时会存在混淆。
可以明确在属性之间加上
"_"
以显式表达意图
,比如
"
findByUser_DepUuid
()"
或者
"
findByUserDep_uuid
()"
•
特殊的参数: 还可以直接在方法的参数上加入分页或排序的参数,比如:
–
Page<
UserModel
>
findByName
(Stringname,
Pageable
pageable
);
–
List<
UserModel
>
findByName
(Stringname, Sort sort);