postgresql+Mybatis insert数据后返回主键id
1.主键id存在序列的情况
可以使用如下方式:
<insert id="insertUser">
<selectKey resultType="int" order="AFTER" keyProperty="pid" >
SELECT nextval('tbl_user_pid_seq'::regclass) AS pid
</selectKey>
insert into tbl_user(name, age) values(#{name}, #{age})
</insert>
使用selectKey标签 after是指在insert之后获取id,‘tbl_user_pid_seq’是指序列名,在navicat中可以查看到:
2.主键id不存在序列的情况
可以使用如下方式:
<select id="insertData" parameterType="Map" resultType="long">
insert
into users
(name,gender,age,remark)
values(
#{name},
#{gender},
#{age},
#{remark})
returning id
</select>
使用returning 可以返回执行insert语句之后的字段值。但是insert语句要放在select标签内执行。