1. 程式人生 > 其它 >Mybatis+MySql 實現插入新資料並返回該條插入資料的主鍵ID

Mybatis+MySql 實現插入新資料並返回該條插入資料的主鍵ID

原因:使用Mybatis往Mysql資料庫插入一條資料並返回該條資料的自增主鍵值

解決方法:

  在mapper中指定keyProperty屬性

<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User">
    insert into user(userName,password,comment)
    values(#{userName},#{password},#{comment})
</insert>

  useGeneratedKeys:

    取值範圍:true | false

    預設值:false

    含義:設定是否使用JDBC的getGenereatedKeys方法獲取主鍵並賦值到keyProperty設定的領域模型屬性中。Mysql和SQLServer執行auto-generated key field,因此當資料庫設定好自增主鍵後,可通過JDBC的getGeneratedKeys方法獲取。但想Oralce等不支援auto-generated key field 的資料庫就不能用這種方法獲取主鍵。

  keyProperty:

    (僅對insert有用)標記一個屬性,Mybatis會通過getGeneratedKeys或者通過insert語句的selectKey子元素設定他的值。

    預設:不設定

我們在insert中指定了keyProperty="userId",其中userId代表插入的User物件的主鍵屬性。

public class User {
    private int userId;
    private String userName;
    private String password;
    private String comment;
    
    //setter and getter
}

  

public interface UserDao {

    public int insertAndGetId(User user);

}

  

User user = new User();
user.setUserName("chenzhou");
user.setPassword("xxxx");
user.setComment("測試插入資料返回主鍵功能");

System.out.println("插入前主鍵為:"+user.getUserId());
userDao.insertAndGetId(user);//插入操作
System.out.println("插入後主鍵為:"+user.getUserId());

  

輸出:

插入前主鍵為:0
插入後主鍵為:15

查詢資料庫:

原帖地址記錄更詳細,本次記錄只是為了加深自己的印象。

原帖地址:https://blog.csdn.net/weixin_38553453/article/details/80506935