如何在Java MyBatis 插入數據庫返回主鍵?
1.通過@Options注解獲取自增主鍵ID
當你向一個主鍵為自增的數據表中插入字段后想要返回剛插入那一條數據的自增id。
@Options (useGeneratedKeys=true, keyProperty="gid", // 主鍵 keyColumn="paramGid") // 參數實體中的字段
useGeneratedKeys 設置為"true" 表明要 MyBatis 獲取由數據庫自動生成的主鍵。
keyProperty=“git” 指定把獲取到的主鍵值注入到相對應參數實體中 eqCsImgId屬性。
keyColumn="paramGid指定數據中自增主鍵的名稱。
@Options返回的自增主鍵封裝到 keyProperty 指定的參數類屬性中 直接使用get方法獲取即可。
注:@Options只能搭配Insert語句使用。
代碼示例:
@Insert("insert into pro_group " + "(person_id,gname,group_position,group_introduce,group_establish_time,establish_personid,ascription_companyid) " + "values " + "(#{personId},#{gname},#{position},#{introduce},now(),#{userId},#{companyId})") @Options(useGeneratedKeys=true,keyProperty="gid") int addGrpou(AddGroupParam param);
2.xml中insert標簽獲取主鍵
<insert id="insertMerchant" parameterType="Merchant" useGeneratedKeys="true" keyProperty="id">
useGeneratedKeys設置為 true 時,表示如果插入的表id以自增列為主鍵,則允許 JDBC 支持自動生成主鍵,並可將自動生成的主鍵id返回。
useGeneratedKeys參數只針對 insert 語句生效,默認為 false;
當主鍵id自增的時候返回這個自增的id給keyProperty指定的實體類中的id這個對應數據庫主鍵的屬性。
代碼示例:(主鍵為userId)
<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.xf.mybatis.User"> insert into user(userName,password) values(#{userName},#{password}) </insert>