mybatis新增oracle语句返回主键

来源:互联网 发布:手机淘宝促销活动 编辑:程序博客网 时间:2024/06/05 16:20

前言

有时候在开发过程中,需要将数据insert到数据库中,并且需要获取到数据的主键id,对于oracle数据库来说,主键是通过序列用.nextval生成的,今天记录一下mybatis是怎么返回主键的。

具体代码

例子为将一条教师信息插入到数据库teacher表中,传入的参数为Teacher实体bean。

<insert id="addTeacher" parameterType="com.mycompany.entity.Teacher">        <selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="id">            SELECT teacher_s.nextval FROM dual        </selectKey>            insert into teacher(                ID,                NAME,                DESCRIPTION,                AGE,                SEX,                REMARK            )            values(                #{id},                #{name},                #{description},                #{age},                #{sex},                #{remark}            )    </insert>

可以看到在insert之前先用<selectKey> 标签查询到序列,这时便将id保存到实体bean Teacher中了,之后再将包含id的实体bean插入到teacher表中。所以事实上我们获取id的方式并不是通过mybatis返回值获取的(返回值依旧是插入成功条数),而是通过mybatis将id保存到实体bean中,通过执行完插入操作后用实体bean方法int id = teacher.getId() 获取id。

注意

以上的方法适用于支持序列的数据库,例如oracle,对于MySQL是另一种写法,以后写吧。