您好,登錄后才能下訂單哦!
本篇文章為大家展示了Mybatis-plus中更新date類型數據時常見的問題,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
實體類部分字段如下:
@Data @Builder @NoArgsConstructor @AllArgsConstructor public class ProductPo implements Serializable { /** * 產品主鍵,自增 */ private Long prdId; /** * 名稱 */ private String prdName; /** * 價格 */ private Bigdecimal prdPrice; /** * 上市日期 */ private LocalDate listingDate; /** * 創建時間 */ private LocalDateTime createTime; /** * 修改時間 */ private LocalDateTime updateTime; }
如果在更新的時候,將上市日期(listingDate)由之前的“2020-07-16”更新為null:
ProductPo po = ProductPo.builder.prdId(request.getPrdId).listingDate(null).updateTime(now(3)).build;
更新語句分為兩種,第一種:
Integer rows = prdMapper.update(po, Wrappers.<ProductPo>lambdaUpdate().eq(ProductPo::getPrdId, request.getPrdId()));
第二種:
Integer rows = prdMapper.updateById(po);
這個時候你會發現,上市日期(listingDate)并沒有被更新為空;有可能是因為在更新的時候,mybatis-plus將date類型為空的時候過濾掉了。
解決方法一:在字段上面加標簽,不進行空判斷過濾
@TableField(strategy = FieldStrategy.IGNORED) private LocalDate listingDate;
解決方法二:在yml配置文件中進行全局配置
#mybatis-plus mapper包掃描地址 mybatis-plus: mapper-locations: classpath*:mapper/*/*.xml,classpath*:mapper/*.xml config-location: classpath:/mybatis-config.xml global-config: db-config: field-strategy: ignored
此處是對所有的操作都進行過濾,在官網上還有:insertStrategy,updateStrategy和selectStrategy,可以根據自己需要進行設置。
我個人還是選擇了第一種解決方案,因為進行全局配置的時候,必須保證每次的傳參都是全的,要不然會將數據置空或者沒有將必填字段傳值的時候會報錯。
上述內容就是Mybatis-plus中更新date類型數據時常見的問題,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。