Mybatis插入數據返回自增主鍵
Mybatis插入數據以後只會返回影響的數據庫行數,如果是插入一條數據成功則返回1,失敗返回零,插入多條返回插入成功的數量。
通過註解或者xml配置無法直接返回自增的主鍵。Mybatis插入數據返回的自增主鍵會自動設置爲插入對象的屬性值,因此我們可以通過獲取對象的屬性獲得自增的主鍵。
1、通過xml配置獲取自增主鍵
xml配置
<insert id="addUser" parameterType="com.learn.wyg.model.User">
<selectKey order="AFTER" keyProperty="id" resultType="Integer">
select last_insert_id()
</selectKey>
insert into sys_user(username,password,status) values(#{username},#{password},#{status});
</insert>
或者
(這裏keyProperty是java對象的屬性,keyColumn是數據庫表列名,也就是主鍵名)
<insert id="addUser" useGeneratedKeys="true" keyProperty="id" keyColumn="id" parameterType="com.learn.wyg.model.User">
insert into sys_user(username,password,status) values(#{username},#{password},#{status});
</insert>
mapper
public Integer addUser(User user);
Service
在返回屬性前需要先執行插入方法,這樣mybatis纔會把返回的自增主鍵設置爲對象的屬性。
public Integer insertUser(User user){
Integer res = userMapper.addUser(user);
return user.getId();
}
2、註解方式
註解配置方法
// 返回主鍵字段id值
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
@Insert("insert into user (name,age) values (#{name},#{age})")
Integer insert(User user);
其餘配置均與xml配置的方式相同。