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 List findByLastNameEndingWithAndIdLessThan(StringlastName,Integerid); //WHEREemailIN(?,?,?)Orbirth List findByEmailInOrBirthLessThan(List emails,Datebirth); //WHEREa.id>? /** *AddressId优先查找Person类中的AddressId属性,如果Person类中没有,就查找Address类中的Id属性 *这样容易出现问题,建议级联查询中,属性之间使用"_"连接 * */ List findByAddressIdGreaterThan(Integerid); //这样就很明确是进行级联查询,Address类中的ID属性 List findByAddress_IdGreaterThan(Integerid); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。