SpringData Repository Bean方法定义规范代码实例
本节主要介绍RepositoryBean中方法定义规范。
1、方法不是随便声明,需要符合一定的规范。
2、按照SpringData的规范,查询方法以find|read|get开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性需要首字母大写。
3、SpringData支持的关键字如下:
4、支持属性的级联查询,若当前类有符合条件的属性,则优先使用,而不使用级联属性。若想使用级联属性,则属性之间用"_"连接。
packagecom.ntjr.springdata;
importjava.util.Date;
importjavax.persistence.CascadeType;
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.JoinColumn;
importjavax.persistence.ManyToOne;
importjavax.persistence.Table;
@Table(name="JPA_PERSONS")
@Entity
publicclassPerson{
privateIntegerid;
privateStringlastName;
privateStringemail;
privateDatebirth;
privateAddressaddress;
privateIntegeraddressId;
@GeneratedValue
@Id
publicIntegergetId(){
returnid;
}
publicvoidsetId(Integerid){
this.id=id;
}
publicStringgetLastName(){
returnlastName;
}
@Column(name="LAST_NAME")
publicvoidsetLastName(StringlastName){
this.lastName=lastName;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
publicDategetBirth(){
returnbirth;
}
publicvoidsetBirth(Datebirth){
this.birth=birth;
}
@JoinColumn(name="ADDRESS_ID")
@ManyToOne(cascade={CascadeType.ALL},targetEntity=Address.class)
publicAddressgetAddress(){
returnaddress;
}
publicvoidsetAddress(Addressaddress){
this.address=address;
}
publicIntegergetAddressId(){
returnaddressId;
}
publicvoidsetAddressId(IntegeraddressId){
this.addressId=addressId;
}
@Override
publicStringtoString(){
return"Person[id="+id+",lastName="+lastName+",email="+email+",birth="+birth+"]";
}
}
packagecom.ntjr.springdata;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.Table;
@Table(name="JPA_ADDRESSES")
@Entity
publicclassAddress{
privateIntegerid;
privateStringprovince;
privateStringcity;
@GeneratedValue
@Id
publicIntegergetId(){
returnid;
}
publicvoidsetId(Integerid){
this.id=id;
}
publicStringgetProvince(){
returnprovince;
}
publicvoidsetProvince(Stringprovince){
this.province=province;
}
publicStringgetCity(){
returncity;
}
publicvoidsetCity(Stringcity){
this.city=city;
}
}
packagecom.ntjr.springdata;
importjava.util.Date;
importjava.util.List;
importorg.springframework.data.repository.RepositoryDefinition;
/**
*
*1、实现Repository接口2、通过注解的方式@RepositoryDefinition将一个bean定义为Repository接口
*/
@RepositoryDefinition(idClass=Integer.class,domainClass=Person.class)
publicinterfacePersonRepsitory{
//根据lastName获取对应的person
PersongetByLastName(StringlastName);
//WHERElastNamelike?%ANDid
ListfindByLastNameStartingWithAndIdLessThan(StringlastName,Integerid);
//WHERElastNameLike%?AndId
ListfindByLastNameEndingWithAndIdLessThan(StringlastName,Integerid);
//WHEREemailIN(?,?,?)Orbirth
ListfindByEmailInOrBirthLessThan(Listemails,Datebirth);
//WHEREa.id>?
/**
*AddressId优先查找Person类中的AddressId属性,如果Person类中没有,就查找Address类中的Id属性
*这样容易出现问题,建议级联查询中,属性之间使用"_"连接
*
*/
ListfindByAddressIdGreaterThan(Integerid);
//这样就很明确是进行级联查询,Address类中的ID属性
ListfindByAddress_IdGreaterThan(Integerid);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。