您的位置:首页 > 数据库 > Oracle

MyBatis在Oracle中插入数据并返回主键的问题解决

2017-08-30 16:42 639 查看
引言:  在MyBatis中,希望在Oracle中插入数据之时,同时返回主键值

环境:MyBatis 3.2 ,
oracle,
spring 3.2

mybatis 中的sql语句

<insert id="insertTest" parameterType="com.igool.rpc.db.model.thrift.SspTest">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select S_TEST.NEXTVAL from dual
</selectKey>
insert into ss_test(id,password) values(#{id}, #{password})
</insert>


1)要点是这里使用了selectKey来定义返回新生成的PrimaryKey,这个情况仅仅适用于Oracle。

2)需要注意的地方是在Java代码中使用Integer类型,但是在MyBatis的映射文件中,使用java.math.BigDecimal类型,否则会报类型转换或者不匹配的错误。
3)还需要注意的是在mapper接口中不能使用@Param("")绑定传入实体参数这样会主键会绑定到新建的实体中。

其他比如MySQL或者SQLServer的情况适用于以下情况:

<insert id="insert" parameterType="Spares" useGeneratedKeys="true" keyProperty="id">

insert into ss_test(id,password) values(#{id}, #{password})

</insert>



MySQL就一般比较稳定不会出现oracle出现的各种情况。

这是比较常用的返回主键的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: