問題起因:在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 !
自己遇到的錯誤,簡單總結一下,如果有理解不對的地方,希望能有大佬們能指導指導。