SpringData Repository Bean方法定義規(guī)范代碼實例
本節(jié)主要介紹Repository Bean中方法定義規(guī)范。
1、方法不是隨便聲明,需要符合一定的規(guī)范。
2、按照Spring Data的規(guī)范,查詢方法以find|read|get開頭,涉及條件查詢時,條件的屬性用條件關(guān)鍵字連接,要注意的是:條件屬性需要首字母大寫。
3、Spring Data支持的關(guān)鍵字如下:
4、支持屬性的級聯(lián)查詢,若當(dāng)前類有符合條件的屬性,則優(yōu)先使用,而不使用級聯(lián)屬性。若想使用級聯(lián)屬性,則屬性之間用"_"連接。
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 + "]"; } }
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; } }
package com.ntjr.springdata; import java.util.Date; import java.util.List; import org.springframework.data.repository.RepositoryDefinition; /** * * 1、實現(xiàn)Repository接口 2、通過注解的方式@RepositoryDefinition將一個bean定義為Repository接口 */ @RepositoryDefinition(idClass = Integer.class, domainClass = Person.class) public interface PersonRepsitory { // 根據(jù)lastName獲取對應(yīng)的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 優(yōu)先查找Person類中的AddressId屬性,如果Person類中沒有,就查找Address類中的Id屬性 * 這樣容易出現(xiàn)問題,建議級聯(lián)查詢中,屬性之間使用"_"連接 * */ List<Person> findByAddressIdGreaterThan(Integer id); // 這樣就很明確是進(jìn)行級聯(lián)查詢,Address類中的ID屬性 List<Person> findByAddress_IdGreaterThan(Integer id); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis?mysql模糊查詢方式(CONCAT多個字段)及bug
這篇文章主要介紹了Mybatis?mysql模糊查詢方式(CONCAT多個字段)及bug,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01Java 實戰(zhàn)練手項目之酒店管理系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)一個酒店管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11Java日常練習(xí)題,每天進(jìn)步一點點(13)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07mybatis mapper.xml獲取insert后的自增ID問題
這篇文章主要介紹了mybatis mapper.xml獲取insert后的自增ID問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05