欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MyBatis实战——Oracle写数据并生成主键

程序员文章站 2024-03-20 10:28:16
...

 一、写入单条数据

<insert id="addUserTest" parameterType="com.totem.model.UserTest">
        <selectKey keyProperty="id" resultType="int" order="BEFORE">
            SELECT seq_user_test.nextval FROM dual
        </selectKey>
        INSERT INTO user_test(ID, u_name, u_age, u_address, u_tele)
        VALUES
            (#{id}, #{user.uName}, #{user.uAge}, #{user.uAddress}, #{user.uTele})
</insert>

此种写法为MyBatis官方文档推荐写法,其中

  -- keyProperty指定INSERT语句中的主键名,需要和INSERT语句中的主键名保持一致

  -- resultType指定主键的类型

  -- order指定selectKey标签中的数据的执行时机(在INSERT之前还是之后)

二、写入多条数据

<insert id="addUserTestList" parameterType="java.util.List">
        INSERT INTO user_test(ID, u_name, u_age, u_address, u_tele)
        SELECT seq_user_test.nextval, u.* from (
        <foreach collection="list" item="user" separator="union all">
            select
                #{user.uName},
                #{user.uAge},
                #{user.uAddress},
                #{user.uTele}
            from dual
        </foreach>
        ) u
</insert>

因为Oracle的主键是通过序列来实现增长的,区别于MySQL、MSDB等自增型主键,所以此种写法借助oracle中表数据复制的原理进行

  -- foreach标签中的语句借助dual表将映射进来的数据生成虚拟表

  -- 最后将虚拟表中的数据复制到目标表之中

MyBatis实战——Oracle写数据并生成主键

上一篇: JavaScript学习笔记——DOM

下一篇: