MyBatis:<selectKey> #keyProperty、keyColumn、order

数据库表中有一个自增长字段为id,如何在插入记录之后获得这个id值呢?

比如:

insert into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday})

执行完后,我们去看数据库,发现多了一条记录:

问题:看了数据库后我们知道自动生成的id是11,如果不看数据库,能不能知道这个id呢?

selectKey 就能解决这个问题!

示例如下:

    <insert id="saveUser" parameterType="com.aimin.domain.User">
        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
            select last_insert_id();
        </selectKey>
        insert into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday})
    </insert>
说明:

1、keyColumn:数据表中那个自增长的id字段名称

2、keyProperty:数据表的字段和实体类的属性是对应的,在实体类中对应的属性就是keyProperty

3、order:本标签内的语句(这里是 select last_insert_id() )是先执行还是后执行
这里order="AFTER", 先执行 insert into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday})   后执行select last_insert_id()

 

 

原文地址:https://www.cnblogs.com/emanlee/p/15124884.html