每次插入的数据的主键都是从序列中拿到的值。
示例:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sunxiaping.mapper.EmployeeMapper">
<!--
Oracle不支持自增主键,Oracle是使用序列来模拟自增的。
每次插入的数据的主键都是从序列中拿到的值。
-->
<insert id="addEmp" useGeneratedKeys="true" keyProperty="id" parameterType="com.sunxiaping.domain.Employee">
<!--
插入时的主键是从序列中拿到的
keyProperty:查询的主键封装给JavaBean的哪个属性
order:
- BEFORE:当前的SQL在插入SQL之前运行
- 运行顺序:先运行selectKey中的SQL语句,查询出id,然后将id封装给JavaBean中的id属性,在运行插入SQL的时候,就可以取出id属性对应的值
- AFTER: 先运行插入SQL,再运行当前的SQL
- 运行顺序:先运行插入的SQL(会从序列中取出新值作为id),再运行selectKey查询id,然后将id封装给JavaBean的id属性,并发情况下可能有问题。
resultType:查出的数据的返回值类型
-->
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">
<!--
编写查询主键的SQL语句
-->
SELECT employee_seq.nextval FROM dual
</selectKey>
INSERT INTO employee (id,last_name,email,gender)
VALUES (#{id,jdbcType=INTEGER},#{lastName,jdbcType=VARCHAR},#{email,jdbcType=VARCHAR},#{gender,jdbcType=VARCHAR})
</insert>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sunxiaping.mapper.EmployeeMapper">
<!--
Oracle不支持自增主键,Oracle是使用序列来模拟自增的。
每次插入的数据的主键都是从序列中拿到的值。
-->
<insert id="addEmp" useGeneratedKeys="true" keyProperty="id" parameterType="com.sunxiaping.domain.Employee">
<!--
插入时的主键是从序列中拿到的
keyProperty:查询的主键封装给JavaBean的哪个属性
order:
- BEFORE:当前的SQL在插入SQL之前运行
- 运行顺序:先运行selectKey中的SQL语句,查询出id,然后将id封装给JavaBean中的id属性,在运行插入SQL的时候,就可以取出id属性对应的值
- AFTER: 先运行插入SQL,再运行当前的SQL
- 运行顺序:先运行插入的SQL(会从序列中取出新值作为id),再运行selectKey查询id,然后将id封装给JavaBean的id属性,并发情况下可能有问题。
resultType:查出的数据的返回值类型
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
<!--
编写查询主键的SQL语句
-->
SELECT employee_seq.currval FROM dual
</selectKey>
INSERT INTO employee (id,last_name,email,gender)
VALUES (employee_seq.nextval},#{lastName,jdbcType=VARCHAR},#{email,jdbcType=VARCHAR},#{gender,jdbcType=VARCHAR})
</insert>
</mapper>