Mybatis+MySql 實現插入新資料並返回該條插入資料的主鍵ID
阿新 • • 發佈:2021-09-01
原因:使用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