JPA @Query动态添加参数查询(超级详细,附代码)

1:新建实体类

@Data
@Entity
@Table(name = "student")
@DynamicUpdate
@DynamicInsert
public class Student {

	@Id
	@JsonSerialize(using = ToStringSerializer.class)
	@Column(name = "id")
	private Long id;

	@Column(name = "name")
	private String name;

	@Column(name = "address")
	private String address;

	@Column(name = "create_time")
	@JsonIgnore
	private Date createTime;

	@Column(name = "update_time")
	@JsonIgnore
	private Date updateTime;

	@Version
	@JsonIgnore
	@Column(name = "version")
	private int version;

	@PreUpdate
	protected void onUpdate() {
		updateTime = new Date();
	}

	@PrePersist
	protected void onCreate() {
		createTime = new Date();
		updateTime = new Date();
	}

}

2.Jpa接口

当传递的参数address值为null时,查询的就是全部学生,当address有值时,查询的就是某一地区的所有学生信息
@Repository
public interface StudentRepository extends JpaRepository<Student, Long>, JpaSpecificationExecutor<Student> {
    
    @Query("select student.name, student.address from Student student " +
        "  where (student.name = ?1 or ?1 is null)  ")
    List<TestVo> find(String address);
}

3:编写自定义接收查询结果的TestVo接口

public interface TestVo{
   String getName();
   String getAddress();
}

4:自己编写测试类调用即可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值