SpringData Repository Bean方法定义规范代码实例

 更新时间:2020年08月27日 10:18:01   作者:云淡风轻博客  
这篇文章主要介绍了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 + "]";
  }

}
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、实现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);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java中比较器Comparator和Comparable的区别

    Java中比较器Comparator和Comparable的区别

    这篇文章主要介绍了Java中比较器Comparator和Comparable的区别,我们在使用 Collections.sort()对链表进行排序时,常常需要根据不同情况自定义排序规则,今天我们来看看比较器之间的区别,需要的朋友可以参考下
    2023-08-08
  • Spring详解使用注解开发流程

    Spring详解使用注解开发流程

    这篇文章主要为大家详细介绍了Spring如何使用注解开发,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-05-05
  • 解决springcloud 配置gateway 出现错误的问题

    解决springcloud 配置gateway 出现错误的问题

    今天给大家分享springcloud 配置gateway 出现错误的问题,其实解决方法很简单,只需要降低springcloud版本,改成Hoxton.SR5就好了,再次改成Hoxton.SR12,也不报错了,下面给大家展示下,感兴趣的朋友一起看看吧
    2021-11-11
  • Java Hutool(糊涂)工具类索引详解

    Java Hutool(糊涂)工具类索引详解

    这篇文章主要介绍了Java Hutool(糊涂)工具类索引,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java StringUtils字符串分割转数组的实现

    Java StringUtils字符串分割转数组的实现

    这篇文章主要介绍了Java StringUtils字符串分割转数组的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Java开发框架spring实现自定义缓存标签

    Java开发框架spring实现自定义缓存标签

    这篇文章主要介绍了Java开发框架spring实现自定义缓存标签的详细代码,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 运行java的class文件方法详解

    运行java的class文件方法详解

    这篇文章主要详细介绍了运行java的class文件方法的相关资料,需要的朋友可以参考下
    2015-02-02
  • Spring Cloud gateway 网关如何拦截Post请求日志

    Spring Cloud gateway 网关如何拦截Post请求日志

    这篇文章主要介绍了Spring Cloud gateway 网关如何拦截Post请求日志的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java String[]字符串数组自动排序的简单实现

    java String[]字符串数组自动排序的简单实现

    下面小编就为大家带来一篇java String[]字符串数组自动排序的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • 解决idea启动报错javax.imageio.IIOException的问题

    解决idea启动报错javax.imageio.IIOException的问题

    这篇文章主要介绍了idea启动报错javax.imageio.IIOException,解决打不开idea问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09

最新评论