SpringData系列三 Repository Bean 方法定义规范
本节主要介绍Repository Bean中方法定义规范。
1、方法不是随便声明,需要符合一定的规范。
2、按照Spring Data的规范,查询方法以find|read|get开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性需要首字母大写。
3、Spring Data支持的关键字如下:


4、支持属性的级联查询,若当前类有符合条件的属性,则优先使用,而不使用级联属性。若想使用级联属性,则属性之间用"_"连接。
package com.ntjr.springdata; import java.util.Date; import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table; @Table(name = "JPA_PERSONS")
@Entity
public class Person { private Integer id;
private String lastName;
private String email;
private Date birth;
private Address address;
private Integer addressId; @GeneratedValue
@Id
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getLastName() {
return lastName;
} @Column(name = "LAST_NAME")
public void setLastName(String lastName) {
this.lastName = lastName;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public Date getBirth() {
return birth;
} public void setBirth(Date birth) {
this.birth = birth;
} @JoinColumn(name = "ADDRESS_ID")
@ManyToOne(cascade = { CascadeType.ALL }, targetEntity = Address.class)
public Address getAddress() {
return address;
} public void setAddress(Address address) {
this.address = address;
} public Integer getAddressId() {
return addressId;
} public void setAddressId(Integer addressId) {
this.addressId = addressId;
} @Override
public String toString() {
return "Person [id=" + id + ", lastName=" + lastName + ", email=" + email + ", birth=" + birth + "]";
} }
Person.java
package com.ntjr.springdata; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table; @Table(name="JPA_ADDRESSES")
@Entity
public class Address { private Integer id;
private String province;
private String city; @GeneratedValue
@Id
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getProvince() {
return province;
} public void setProvince(String province) {
this.province = province;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} }
Address.java
package com.ntjr.springdata; import java.util.Date;
import java.util.List; import org.springframework.data.repository.RepositoryDefinition; /**
*
* 1、实现Repository接口 2、通过注解的方式@RepositoryDefinition将一个bean定义为Repository接口
*/
@RepositoryDefinition(idClass = Integer.class, domainClass = Person.class)
public interface PersonRepsitory {
// 根据lastName获取对应的person
Person getByLastName(String lastName); // WHERE lastName like ?% AND id<?
List<Person> findByLastNameStartingWithAndIdLessThan(String lastName, Integer id); // WHERE lastName Like %? And Id <?
List<Person> findByLastNameEndingWithAndIdLessThan(String lastName, Integer id); // WHERE email IN(?,?,?) Or birth <?
List<Person> findByEmailInOrBirthLessThan(List<String> emails, Date birth); // WHERE a.id >?
/**
* AddressId 优先查找Person类中的AddressId属性,如果Person类中没有,就查找Address类中的Id属性
* 这样容易出现问题,建议级联查询中,属性之间使用"_"连接
*
*/
List<Person> findByAddressIdGreaterThan(Integer id); // 这样就很明确是进行级联查询,Address类中的ID属性
List<Person> findByAddress_IdGreaterThan(Integer id);
}
PersonRepository.java
SpringData系列三 Repository Bean 方法定义规范的更多相关文章
- 持久化API(JPA)系列(三)实体Bean的开发技术-建立与数据库的连接
在EJB 2.x中.EJB有3种类型的Bean.各自是会话Bean(Session Bean).消息驱动Bean(Message-Driven Bean)和实体Bean(Entity Bean). 随 ...
- 74. Spring Data JPA方法定义规范【从零开始学Spring Boot】
[从零开始学习Spirng Boot-常见异常汇总] 事情的起因:有人问过我们这个这个问题:为什么我利用Spring data jpa写的方法没有按照我想要的情况进行执行呢?我记得当时只是告诉他你你先 ...
- Javascript数组系列三之迭代方法2
今天我们来继续 Javascript 数组系列的文章,上文 <Javascript数组系列二之迭代方法1> 我们说到一些数组的迭代方法,我们在开发项目实战的过程中熟练的使用可以大大提高我们 ...
- Spring Data JPA方法定义规范
Spring Data Jpa方法定义的规则: (1)简单条件查询 简单条件查询:查询某一个实体类或者集合. 按照Spring Data的规范的规定,查询方法以find | read | get开头, ...
- SpringData系列二 Repository接口
本节主要介绍Repository接口规范,及其子接口 Repository是一个空接口,即标准接口 若我们定义的接口继承了Repository,则该接口会被IOC容器识别为一个Repositoty B ...
- (Struts2学习系列三)Struts2动态方法调用:通配符方式
更改src/struts2.xml的代码: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- SpringData系列一 Spring Data的环境搭建
本节作为主要讲解Spring Data的环境搭建 JPA Spring Data :致力于减少数据访问层(DAO)的开发量.开发者唯一要做的就是声明持久层的接口,其他都交给Spring Data JP ...
- 【转】Spring 中三种Bean配置方式比较
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...
- Spring 中三种Bean配置方式比较
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...
随机推荐
- Android应用程序更新并下载
创建一个新类,名为UpdateManager,代码如下: package com.af.service; import java.io.BufferedReader; import java.io.F ...
- Maven项目搭建(二):Maven搭建SSM框架
上一章给大家讲解了如何使用Maven搭建web项目. 这次给大家介绍一下怎么使用Maven搭建SSM框架项目. 首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. p ...
- 模式识别(1)——PCA算法
作者:桂. 时间:2017-02-26 19:54:26 链接:http://www.cnblogs.com/xingshansi/articles/6445625.html 声明:转载请注明出处, ...
- poptest老李谈数据库优化总结
poptest老李谈数据库优化总结 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088 ...
- 测试开发Python培训:实现屌丝的黄色图片收藏愿望(小插曲)
男学员在学习python的自动化过程中对于爬虫很感兴趣,有些学员就想能收藏一些情色图片,供自己欣赏.作为讲师只能是满足愿望,帮助大家实现对美的追求,http://wanimal.lofter.com/ ...
- Mybatis基础学习(五)—缓存
一.概述 mybatis提供查询缓存,如果缓存中有数据就不用从数据库中获取,用于减轻数据压力,提高系统性能. 一级缓存是SqlSession级别的缓存.在操作数据库时需要 ...
- JavaWeb总结(十)—文件上传和下载
一.文件的上传 1.文件的基本上传 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择 ...
- Statistical Models and Social Science
1.1 Statistical Models and Social Reality KEY: complex society v.s statistical models relationship,d ...
- Python 安装虚拟环境
写在前面: 安装指南是在 Ubuntu 下面操作的.不同的 Linux 版本,安装指令不同.所以,该指南的某些指令对于像 CentOS 等非 Ubuntu 系统不适用. 为什么需要使用虚拟环境? 虚拟 ...
- YARN学习总结
YARN学习总结 前言 YARN(Yet Another Resource Manage,另一种资源协调者)是hadoop-0.23版本引入的的一个新的特性,可以说它是对原有Hadoop Mapred ...