如何获取主键返回值(MySQL、Oracle)

添加用户、返回主键

--场景:在执行新增用户sql后,service层返回新增用户的主键值(与mybatis一起使用)

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

1.  数据库MySQL  主键自增

     执行insert提交之后自动生成一个自增主键。

     通过mysql的函数获取到刚刚插入记录的自增主键。LAST_INSERT_ID();

1 <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
2              Select LAST_INSERT_ID();
3 </selectKey>
4 insert into user(name, age, sex, birthday) 
5                values(#{name}, #{age}, #{sex}, #{birthday})
View Code

2.  数据库MySQL  主键非自增

     通过mysql的UUID()查询到主键,需要修改表中的id字段类型为String,长度设置为35位。

     执行思路:  先通过uuid()查询到主键,将主键输入到sql语句中。
                    执行uuid()语句顺序,是相对于insert语句之前执行。

1 <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
2            Select UUID();
3 </selectKey>
4 insert into user(id, name, age, sex, birthday) 
5                 values(#{id}, #{name}, #{age}, #{sex}, #{birthday})
View Code

3.  数据库Oracle  主键序列

    执行思路: 先通过 序列名.nextval 得到主键,将主键输入到sql语句中。
                 执行 序列名.nextval 语句顺序,是相对于insert语句之前执行。

1 <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
2            Select 序列名.nextval;
3 </selectKey>
4 insert into user(id, name, age, sex, birthday) 
5                values(#{id}, #{name}, #{age}, #{sex}, #{birthday})  
View Code

    

    

  

原文地址:https://www.cnblogs.com/qianbing/p/6972508.html