需求:插入数据库的数据成功后返回其主键。
条件1,数据库必须支持自增主键,例如MySql等,Oracle这种不支持自增主键的不可以。
条件2,目标主键必须自增,UUID是不支持的。
实现方式:
1.mybatis 的insert(或者insertSelective,以逆向工程mapper代码为例)标签要这样写
<insert id="insertSelective" parameterType="com.demo.UserData" useGeneratedKeys="true" keyProperty="id">
插入后就可以获取被插入数据的主键了。
但是,这个主键不知直接返回的,直接返回的永远都是操作影响的记录数,这个主键是直接返回到被插入对象里的。
java代码中的insert代码为
mapper.insertSelective(userData);
那么,执行完上面的代码后,就可以通过userData.getId()获取到返回的自增主键了。
其他方式:
还可以通过mapper.xml中添加
<insert id="insertSelective" parameterType="com.demo.UserData">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user_data (xxx,xxx,xxx,xxx) values (省略)
</insert>
来实现同样功能,
更简单的方式是,直接在使用逆向工程的时候
<generatorConfiguration>
<context>
<table tableName="user_data"
domainObjectName="UserData">
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>
</context>
</generatorConfiguration>
逆向后,直接生成上面的mapper.xml映射代码