最新Mybatis插入数据返回自增主键详细配置

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

你可能感兴趣的:(Mybatis)