使用mybatis时,insert方法如何返回主键?
void add(@Param("user")User user);
方法一:
<insert id="add" parameterType="com.java4all.User">
<selectKey resultType="java.lang.String" order="AFTER" keyProperty="user.id">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user ( name, age,address)
values ( #{user.name},#{user.age},#{user.address})
</insert>
下面这个是关键:order的值是after,表示先执行insert语句,然后再选择最后一个主键,返回到实体类中。
<selectKey resultType="java.lang.String" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>
方法二:
<insert id="add" parameterType="com.java4all.User" useGeneratedKeys="true" keyProperty="user.id">
insert into user ( name, age,address)
values ( #{user.name},#{user.age},#{user.address})
</insert>
<insert id="add" parameterType="com.java4all.User" useGeneratedKeys="true" keyProperty="id">
insert into user ( name, age,address)
values ( #{name},#{age},#{address})
</insert>
然后,user里需要提供id 的get set方法,添加方法执行完后id会被塞回到user对象中。