mybatis新增oracle语句返回主键

前言

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

具体代码

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

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

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

注意

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

你可能感兴趣的:(后端开发)