日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyBatis-Plus_入门试炼03

發布時間:2024/9/27 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis-Plus_入门试炼03 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

排除非表字段的3種方式

常見編程場景:
實體類中某個變量不對應數據庫的表中的任何字段,用于暫時保存臨時數據或者通過某種方式計算或組裝的數據。

文章目錄

  • 一、舉個栗子:
    • 1.1 在User實體類中,添加remark屬性
    • 1.2 執行插入操作:
    • 1.3 異常信息:
    • 1.4 問題定位
    • 1.5 解決方案
  • 二、針對以上場景,MP提供了三種解決方案
    • 2.1 第一種解決方案:
      • 2.1.1 在remark屬性上添加transient 關鍵字
      • 2.1.2 再次執行插入成功:
      • 2.1.3 控制臺輸出
    • 2.2 第二種解決方案:
      • 2.2.1 在remark屬性上添加static 關鍵字
      • 2.2.2 再次執行插入成功:
      • 2.2.3 控制臺輸出
    • 2.3 第三種解決方案(建議使用):
      • 2.3.1 在remark屬性上添加@TableField注解
      • 2.3.2 在此執行插入成功:
      • 2.3.3 控制臺輸出

一、舉個栗子:

1.1 在User實體類中,添加remark屬性

//備注 保存用于程序調用或者組裝的數據,在數據庫中沒有對應的字段 @Data @TableName("mp_user") public class User {//主鍵@TableIdprivate Long userId;//姓名@TableField("name")private String roleName;//年齡private Integer age;//郵箱private String email;//創建時間private LocalDateTime createTime;//備注 保存用于程序調用或者組裝的數據,在數據庫中沒有對應的字段private String remark; }

1.2 執行插入操作:

/*** 測試與數據庫無對應字段*/@Testpublic void insertNoCorField() {User user = new User();user.setRoleName("gblfy");user.setAge(26);user.setCreateTime(LocalDateTime.now());user.setRemark("數據庫中無對應字段");int rows = userMapper.insert(user);System.out.println("影響數據庫的條數:" + rows);}

1.3 異常信息:

org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'remark' in 'field list' ### The error may exist in com/gblfy/mp/mybatisplus/samplesquickstart/mapper/UserMapper.java (best guess) ### The error may involve com.gblfy.mp.mybatisplus.samplesquickstart.mapper.UserMapper.insert-Inline ### The error occurred while setting parameters ### SQL: INSERT INTO mp_user ( user_id, name, age, create_time, remark ) VALUES ( ?, ?, ?, ?, ? ) ### Cause: java.sql.SQLSyntaxErrorException: Unknown column 'remark' in 'field list' ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 'remark' in 'field list'

1.4 問題定位

數據庫中無remark字段列,插入數據庫時,字段數量對應不上,導致拋出異常

1.5 解決方案

二、針對以上場景,MP提供了三種解決方案

2.1 第一種解決方案:

2.1.1 在remark屬性上添加transient 關鍵字

  • 表明不參與序列化過程
/*第一種情況*/ private transient String remark;

2.1.2 再次執行插入成功:

/*** 第一種解決方案:* * 添加transient關鍵字,不參與序列化過程* * 測試與數據庫無對應字段*/@Testpublic void insertNoCorField() {User user = new User();user.setRoleName("gblfy");user.setAge(26);user.setCreateTime(LocalDateTime.now());user.setRemark("數據庫中無對應字段");int rows = userMapper.insert(user);System.out.println("影響數據庫的條數:" + rows);}

2.1.3 控制臺輸出

上面加上transient 關鍵字,不參與序列化過程,但是,我需要參與序列化怎么辦呢?

2.2 第二種解決方案:

2.2.1 在remark屬性上添加static 關鍵字

  • 表明時靜態的,需要手動添加set和get方法,lombok不會生成
/*第二種情況*///備注 保存用于程序調用或者組裝的數據,在數據庫中沒有對應的字段private static String remark;public static String getRemark() {return remark;}public static void setRemark(String remark) {User.remark = remark;}

2.2.2 再次執行插入成功:

/*** 第二種解決方案:** 1.添加static關鍵字* 2.表明remark屬性是靜態的* 3.可以用類名直接調用** 測試與數據庫無對應字段*/@Testpublic void insertNoCorField2() {User user = new User();user.setRoleName("gblfy");user.setAge(26);user.setCreateTime(LocalDateTime.now());//用類名直接調用setRemark方法User.setRemark("數據庫中無對應字段");int rows = userMapper.insert(user);System.out.println("影響數據庫的條數:" + rows);}

2.2.3 控制臺輸出

第二種 remark這個屬性想每個對象對應一個,應該如何處理?

2.3 第三種解決方案(建議使用):

1.添加@TableField(exist = false)注解,并將exist設置為false,默認為true 數據庫有此字段
2.表明remark屬性在數據庫是不存在的

2.3.1 在remark屬性上添加@TableField注解

/*第三種情況*/@TableField(exist = false)private String remark;

2.3.2 在此執行插入成功:

/*** 第三種解決方案:** 1.添加@TableField(exist = false)注解,并將exist設置為false,默認為true 數據庫有此字段* 2.表明remark屬性在數據庫是不存在的** 測試與數據庫無對應字段*/@Testpublic void insertNoCorField3() {User user = new User();user.setRoleName("gblfy");user.setAge(26);user.setCreateTime(LocalDateTime.now());//用類名直接調用setRemark方法user.setRemark("第三種情況_數據庫中無對應字段");int rows = userMapper.insert(user);System.out.println("影響數據庫的條數:" + rows);}

2.3.3 控制臺輸出

想學習更多微服務、分布式、中間件、數據庫、項目快速構建等系列技術
請訪問http://gblfy.com
讓我們一起進步!!!

總結

以上是生活随笔為你收集整理的MyBatis-Plus_入门试炼03的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。