美文网首页
Spring Data JPA生成动态SQL空值处理

Spring Data JPA生成动态SQL空值处理

作者: 梦想又照进现实 | 来源:发表于2019-10-14 16:27 被阅读0次

    Spring Data JPA默认在生成SQL执行时候会将所有栏位都生成出来,导致有的空值栏位也被赋值,或者你只想更新某几个栏位时候,却把整个对象的属性都更新了,这不符合我们的期望。

    Hibernate,JPA注解@DynamicInsert和@DynamicUpdate能实现动态控制空值生成SQL;
    @DynamicInsert属性:设置为true,设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false。
    比如希望数据库插入日期或时间戳字段时,在对象字段为空的情况下,表字段能自动填写当前的sysdate。

    @DynamicUpdate属性:设置为true,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false。

    
    @Data
    @Entity
    @DynamicInsert
    @DynamicUpdate
    @Table(name = "t_xxx_inf")
    /**  身份校验信息表 **/
    public class SlsAppIdtInf {
        @Id
        @Column(columnDefinition = "char(16) COMMENT'收件编号'")
        private String appNbr;
        @Column(columnDefinition = "char(10) COMMENT'活体检测结果'")
        private String lbResult;
        @Column(columnDefinition = "int COMMENT'活体检测重试次数'")
        private int lbRepTimes;
        @Column(columnDefinition = "timestamp COMMENT'人脸识别时间'", insertable = true, updatable = true)
        private Date faceRegTime;
        @Column(columnDefinition = "char(19) COMMENT'已绑实名认证银行卡号'")
        private String bndCrdNbr;
        @Column(columnDefinition = "char(12) COMMENT'已绑实名认证手机号码'")
        private String bndMobNbr;
        @Column(columnDefinition = "timestamp COMMENT'OCR时间'", insertable = true, updatable = true)
        private Date ocrTime;
        @Column(columnDefinition = "timestamp COMMENT'姓名身份证确认时间'" , insertable = true, updatable = true)
        private Date nameTime;
        @Column(columnDefinition = "timestamp COMMENT'实名绑卡时间'" , insertable = true, updatable = true)
    

    其中

    insertable = true, updatable = true
    

    设置为true时候为,空值时候会出现下面的SQL:

     Hibernate: insert into Cat (cat_name, id) values (?, ?)  
    

    默认是false,会全量拼装对象的栏位为SQL:

    Hibernate: insert into Cat (create_time, update_time, cat_name, id) values (?, ?, ?, ?)  
    

    相关文章

      网友评论

          本文标题:Spring Data JPA生成动态SQL空值处理

          本文链接:https://www.haomeiwen.com/subject/tnqcmctx.html