myMapper.xml
<insert id="insertXXX" useGeneratedKeys="true" keyProperty="MyId" parameterType="com.xx.yy.MyClass"> //普通的插入語句SQL語句 </insert>
這樣就可以插入數據后,直接用對象getId()
useGeneratedKeys:
取值范圍:true|false 默認值是:false。
含義:設置是否使用JDBC的getGenereatedKeys方法獲取主鍵並賦值到keyProperty設置的領域模型屬性中。MySQL和SQLServer執行auto-generated key field,因此當數據庫設置好自增長主鍵后,可通過JDBC的getGeneratedKeys方法獲取。但像Oralce等不支持auto-generated key field的數據庫就不能用這種方法獲取主鍵了。
keyProperty:
標記一個屬性, MyBatis 會通過 getGeneratedKeys 或者通過 insert 語句的 selectKey 子元素設置它的值。默認: 不設置。
所示,我們在insert中指定了keyProperty="id",其中id代表插入的User對象的主鍵屬性id(User對象中id名,非SQL字段名。User對象id對應SQL中主鍵字段)。
僅對 insert 有用。
舉個例子:
public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id= id; } //省略其它 get 和 set方法 }
User user = new User(); user.setUserName("chenzhou"); userDao.insertAndGetId(user);//插入操作
Integer id = user.getUserId()//直接獲取主鍵id
System.out.println("返回的主鍵為:"+id);
<insert id="addUser" useGeneratedKeys="true" parameterType="com.lan.vote.model.User" keyProperty="id">
insert into User(name) values(#{name})
</insert>
轉載:https://blog.csdn.net/sinat_39308893/article/details/86595063