当前位置:  首页>> 技术小册>> Mybatis合辑2-Mybatis映射文件

  • Oracle 不支持自增主键,Oracle 是使用序列来模拟自增的。
  • 每次插入的数据的主键都是从序列中拿到的值。

  • 示例:

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