mybatis新增oracle语句返回主键

前言

有时候在开发过程中,需要将数据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是另一种写法,以后写吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值