依照SpringData的命名规则,对于两个有关联关系的对象的查询,可以通过方法名中“_”下划线类标识,也可以通过Spring-Data-Jpa命名规范查询,同时SpringDataJpa还支持用@Query注解定义在数据访问层接口的方法上实现查询,下面来看一个示例进行理解。
上一篇讲了Spring-Data-Jpa入门,这一篇来看一下Spring-Data-Jpa条件查询(基于上一篇Spring-Data-Jpa入门的项目中写的,配置文件没有任何改动,详情可以参考Spring-Data-Jpa入门)。
编写代码
1、创建持久化类
在entity包中创建两个持久化类学生类Stu.java和班级类Clazz.java,代码如下
Stu.java类(Stu和Clazz是多对一关系,表关联注解代码中有注释)
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.springframework.data.annotation.CreatedBy;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.ManyToOne;
//用于标记持久化类,SpringBoot项目加载后会自动根据持久化类建表
@Entity
//设置表名为tb_stu
@Table(name=“tb_stu”)
public class Stu {
private Integer id; //主键
private String name; //姓名
private String address; //地址
private Integer age; //年龄
private char sex; //性别
//@JsonIgnore注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉
@JsonIgnore
private Clazz clazz;
/**
-
使用@id指定主键。使用代码@GeneratedValue
-
指定主键的生存策略,mysql默认为自动增长
*/
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = a