【Mybatis-Plus】在使用DTO對象時候,插入ID鍵時前臺有值,INSERT插入不進去數據庫

問題起因:在Swagger-ui掉用接口時候,參數傳到後臺控制器斷點發現有值, ID>> controller 有值,之前有過類似的情況,比如查詢時候只出現部分字段的值。

解決辦法:經過了解,在使用 mybatis 時候需要將數據庫的字段與程序內的實體名稱進行一一對應。另外要注意的事情是,數據庫中如果是小寫下劃線形式,則需要轉換爲駝峯式命名法。

例:

    @TableId("u_id") //這裏映射數據庫字段、
    public String uId; //這裏是程序系統中命名方式

    @TableField("u_name")
    public String uName;

還有一種,通常會採用DTO(數據傳輸對象)與前臺交互,在創建 DTO 類時候也需要注意,此時 DTO 類中的對象需要與實體類中的對象名稱要保持一致,也就是說你在實體類中用什麼對象名稱,在 DTO 中的對象也就要用什麼名字。

例: 

    //DTO
    @ApiModelProperty(value = "ID", name = "ID")
    public String uID;
    @ApiModelProperty(value = "NAME", name = "uName")
    public String uName;

    //entity
    @TableId("u_id")
    public String uID;
    @TableField("u_name")
    public String uName;

命名可能不規範,只是做個例子。之前因爲疏忽,將 DTO 中 的roleID 寫成了大寫,在 dto.setuID(val)時候值設置不進來,但是uName 可以用,然後嘗試把 entity 修改一下,發現可以用了。其實應該是修改 DTO 裏面的。

 

ps:如果數據庫中字段是下劃線類的,在程序中影射一樣要採用下劃線轉駝峯式命名,否則可能會爲 null

 

自己遇到的錯誤,簡單總結一下,如果有理解不對的地方,希望能有大佬們能指導指導。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章