@SelectKey在springboot整合Mybatis時總是返回1

問題:

我們想在插入一條數據後同時能夠返回這條數據在表中的id,Mybatis提供了@SelectKey註解。
t_user 爲數據表,主鍵自增
SelectKey的四個屬性:

  • keyColumn:插入數據以後,要返回的內容在數據表t_user中對應的字段名稱
  • keyProperty:指定返回的id映射到bean中的哪個屬性(這裏是user中的id),
  • before=false:表示這個selectKey語句的執行是在insert語句之後
  • resultType:selectKey語句返回值的類型,我這裏是long類型

但是返回的結果一直是1,分析這個1可能是insert(user)執行成功返回1,失敗返回0的結果,而不是我們想要的id。
userDao.java

    @Insert("insert into t_user(name)values(#{user.name})")
    @SelectKey(keyColumn = "id",keyProperty = "user.id",before = false,resultType = int.class, statement="select last_insert_id()")
    int insertUser(@Param("user") User user);

調用insert:

	User user = new User();
    user.setName("AAA");
    userDao.insertUser(user);
    return userDao.insertUser(user);

解決辦法:

我插入數據時插入的是一個bean,這個bean的類型就是上面我們提到的user,插入前它的id是空的;
當我們執行插入後,返回插入的結果,插入成功返回1,插入失敗返回0,這就是爲什麼結果一直爲1了。返回的id其實已經映射到了我們插入的bean中,即id值已經返回到user的id屬性裏了我們只要通過它的get方法就可以得到了。代碼如下:

	User user = new User();
    user.setName("AAA");
    userDao.insertUser(user);
    //插入
    userDao.insertUser(user);
    //返回id
    return user.getId();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章