You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data JDBC能否使用对象属性作为查询参数?

Spring Data JDBC 直接引用实体对象属性实现Upsert

可以直接在@Query注解的SQL语句中通过参数名.属性名的格式引用实体对象的属性,无需额外编写包装方法拆解对象。针对你的场景,修改后的代码如下:

@Modifying
@Query("""
    INSERT INTO loan (id, ucdp_document_file_id, lender_loan_no, fre_seller_no, fre_delivery_seller_no, fre_lp_key)
        values (:r.id, :r.ucdpDocumentFileId, :r.lenderLoanNo, :r.freSellerNo, :r.freDeliverySellerNo, :r.freLpKey)
    ON CONFLICT (ucdp_document_file_id) DO UPDATE SET
        lender_loan_no = EXCLUDED.lender_loan_no,
        fre_seller_no = EXCLUDED.fre_seller_no,
        fre_delivery_seller_no = EXCLUDED.fre_delivery_seller_no,
        fre_lp_key = EXCLUDED.fre_lp_key""")
void upsert(LoanRecord r);

说明:

  • 方法参数直接接收LoanRecord对象,参数名为r(可自定义,只要和SQL中的引用一致即可)
  • SQL语句中通过:r.id、:r.ucdpDocumentFileId这种格式,直接引用对象的属性值
  • 确保LoanRecord类中对应属性有公开的getter方法,Spring Data JDBC会通过getter获取属性值填充到SQL中

这样就能移除原来的default包装方法,实现和MyBatis类似的对象属性直接引用效果,适配你使用的Spring Data JDBC 2.4.2版本。

内容的提问来源于stack exchange,提问作者Bogdan Calmac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:45:31