一、MyBatis如何得到插入数据之后的主键值
1、第一种:数据库设置主键自增机制。
userMapper.xml 文件中定义:
<!-- 向 user 表插入一条数据 --> <insert id="insertUser" parameterType="com.ys.po.User"> <!-- 将插入的数据主键返回到 user 对象中 keyProperty:将查询到的主键设置到parameterType 指定到对象的那个属性 select LAST_INSERT_ID():查询上一次执行insert 操作返回的主键id值,只适用于自增主键 resultType:指定 select LAST_INSERT_ID() 的结果类型 order:AFTER,相对于 select LAST_INSERT_ID()操作的顺序 --> <selectKey keyProperty="id" resultType="int" order="AFTER"> select LAST_INSERT_ID() </selectKey> insert into user(username,sex,birthday,address) value(#{username},#{sex},#{birthday},#{address}) </insert>
2、第二种:非自增主键机制
<!-- 向 user 表插入一条数据 --> <insert id="insertUser" parameterType="com.ys.po.User"> <!-- 将插入的数据主键返回到 user 对象中 流程是:首先通过 select UUID()得到主键值,然后设置到 user 对象的id中,在进行 insert 操作 keyProperty:将查询到的主键设置到parameterType 指定到对象的那个属性 select UUID():得到主键的id值,注意这里是字符串 resultType:指定 select UUID() 的结果类型 order:BEFORE,相对于 select UUID()操作的顺序 --> <selectKey keyProperty="id" resultType="String" order="BEFORE"> select UUID() </selectKey> insert into user(id,username,sex,birthday,address) value(#{id},#{username},#{sex},#{birthday},#{address}) </insert>