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配置的方式相同。