1. 程式人生 > 資料庫 >詳解mybatis plus使用insert沒有返回主鍵的處理

詳解mybatis plus使用insert沒有返回主鍵的處理

專案使用springboot搭建。最初的時候是使用mybatis,後來升級到mybatis plus。按照mp的官網介紹,使用mp的insert方法,對於自增的資料庫表,mp會把主鍵寫入回例項的對應屬性。但實際操作起來,卻沒有主鍵。

entity 類設定如下:

@TableName(value = "USERINFO")
public class UserInfo {
  /**
   * 指定自增策略
  */
  @TableId(value = "user_id",type = IdType.AUTO)
  private Long userId;

  private String gender;

  private Date birthday;

  private String phone;
//省略後面的其他屬性和getter/setter
}

dao 類設定如下:

@Repository
@Mapper
public interface UserInfoDao extends BaseMapper<UserInfo> {
  //  int insert(UserInfo record);

  int insertSelective(UserInfo record);

  UserInfo selectByPrimaryKey(Long logId);

  int updateByPrimaryKeySelective(UserInfo record);
}

Service類呼叫userInfoDao的insert方法(此方法是來源於BaseMapper)。但是insert成功後沒有返回主鍵userId。上網查了下,其他人都是這樣設定,就會有主鍵返回。

看到dao類裡面一條註釋,// int insert(UserInfo record); ,心裡有個想法。

這條註釋對應的insert方法,是使用mybatis generator生成的。但是因為此方法名和mybatis plus的通用方法名一樣,所以我把它註釋了。會不會是因為dao對應的mapper.xml檔案,裡面的id = inesert的sql語句依然存在,從而覆蓋掉了mybatis plus的通用insert,所以沒有自動返回主鍵。

點進去對應mapper.xml檔案,果然看到<insert id="insert">的sql語句。刪掉該語句,重試mybatis plus的insert方法,這次有主鍵返回了。

到此這篇關於詳解mybatis plus使用insert沒有返回主鍵的處理的文章就介紹到這了,更多相關mybatis plus insert沒有主鍵內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!