欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringData Repository Bean方法定義規(guī)范代碼實例

 更新時間:2020年08月27日 10:18:01   作者:云淡風(fēng)輕博客  
這篇文章主要介紹了SpringData Repository Bean方法定義規(guī)范代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

本節(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)文章

  • Java設(shè)計模式之策略模式深入刨析

    Java設(shè)計模式之策略模式深入刨析

    策略模式屬于Java 23種設(shè)計模式中行為模式之一,該模式定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的變化不會影響使用算法的客戶。本文將通過示例詳細(xì)講解這一模式,需要的可以參考一下
    2022-05-05
  • Mybatis?mysql模糊查詢方式(CONCAT多個字段)及bug

    Mybatis?mysql模糊查詢方式(CONCAT多個字段)及bug

    這篇文章主要介紹了Mybatis?mysql模糊查詢方式(CONCAT多個字段)及bug,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java GUI編程之布局控制器(Layout)實例分析

    java GUI編程之布局控制器(Layout)實例分析

    這篇文章主要介紹了java GUI編程之布局控制器(Layout),結(jié)合實例形式分析了java GUI編程中布局控制器(Layout)具體功能、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-01-01
  • 深入理解Mybatis一級緩存

    深入理解Mybatis一級緩存

    客戶端向數(shù)據(jù)庫服務(wù)器發(fā)送同樣的sql查詢語句,如果每次都去訪問數(shù)據(jù)庫,會導(dǎo)致性能的降低,那么怎么提高呢?下面小編給大家分享下mybatis為我們提供了一級緩存的策略
    2016-12-12
  • java中的動態(tài)代理與責(zé)任鏈模式詳解

    java中的動態(tài)代理與責(zé)任鏈模式詳解

    這篇文章主要介紹了java中的動態(tài)代理與責(zé)任鏈模式詳解,動態(tài)代理提供了一種靈活且非侵入式的方式,可以對對象的行為進(jìn)行定制和擴(kuò)展,它在代碼重用、解耦和業(yè)務(wù)邏輯分離、性能優(yōu)化以及系統(tǒng)架構(gòu)中起到了重要的作用,需要的朋友可以參考下
    2023-08-08
  • Java 實戰(zhàn)練手項目之酒店管理系統(tǒng)的實現(xiàn)流程

    Java 實戰(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-11
  • Java日常練習(xí)題,每天進(jìn)步一點點(13)

    Java日常練習(xí)題,每天進(jìn)步一點點(13)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • mybatis mapper.xml獲取insert后的自增ID問題

    mybatis mapper.xml獲取insert后的自增ID問題

    這篇文章主要介紹了mybatis mapper.xml獲取insert后的自增ID問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java隨機(jī)生成手機(jī)短信驗證碼的方法

    Java隨機(jī)生成手機(jī)短信驗證碼的方法

    這篇文章主要介紹了Java隨機(jī)生成手機(jī)短信驗證碼的方法,涉及Java數(shù)學(xué)運算計算隨機(jī)數(shù)及字符串操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 詳解MyBatisPlus邏輯刪除與唯一索引沖突問題

    詳解MyBatisPlus邏輯刪除與唯一索引沖突問題

    這篇文章主要介紹了詳解MyBatisPlus邏輯刪除與唯一索引沖突問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評論