美文网首页
MyBatis新增操作返回自增主键

MyBatis新增操作返回自增主键

作者: SILENCE_SPEAKS | 来源:发表于2020-09-21 11:42 被阅读0次

MyBatis新增操作设置完获取新增主键后,该框架是把主键值放到了参数对象上,获取主键值需要用参数对象去get主键值

一. useGeneratedKeys=true

<insert id="insert" parameterType="Entity" useGeneratedKeys="true" keyProperty="id">
      insert into table_A (column_1, column_2, ...) values(#{property1}, #{property2}, ...) 
</insert>

<!-- MyBatis3.4.0之后支持批量插入并获取自增主键值 -->
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
      insert into table_A (column_1, column_2, ...) values
      <foreach collection="list" item="item" separator=",">
          (#{item.property1}, #{item.property2}, ...)
      </foreach>
</insert>

二. selectKey

<insert id="insert" parameterType="Entity">  
<!--
        selectKey:会将 SELECT LAST_INSERT_ID()的结果放入到传入的 entity的主键里面;
        keyProperty:对应的 entity中的主键的属性名,跟数据库的主键对应;  
        order:AFTER 表示 SELECT LAST_INSERT_ID() 在insert执行之后执行,多用与自增主键; 
               BEFORE 表示 SELECT LAST_INSERT_ID() 在insert执行之前执行,这种适合那种主键不是自增的类型;
        resultType:主键类型;
 -->  
    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">  
        SELECT LAST_INSERT_ID()  
    </selectKey>  
    insert into table_A (column_1, column_2, ...) values(#{property1}, #{property2}, ...)  
</insert> 

相关文章

网友评论

      本文标题:MyBatis新增操作返回自增主键

      本文链接:https://www.haomeiwen.com/subject/bvzmyktx.html