• mybatis 插入数据时返回主键


      在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数;显然,假如主键是你生成后插入的,自然你已经有主键了,显然不需要我们再去获得,所以我们这里处理的是当主键是数据库中主动生成的,例如主键是自增长的。如果业务层需要得到记录的主键(自增长)时,可以通过配置的方式来完成这个功能。

    oracle插入数据后获得主键

       针对Sequence主键而言(oracle数据库像mysql或者sql server那样子有帮其实现自增长的声明,想要自增长需要使用sequence,并且使用触发器,当插入一行数据是,使用触发器将sequence的下一个值插入),在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle、DB2,可以采用如下配置方式:

    <insert id="add" parameterType="vo.Category">
    <selectKey resultType="java.lang.Short" order="BEFORE" keyProperty="id">
    SELECT SEQ_TEST.NEXTVAL FROM DUAL
    </selectKey>
    insert into category (name_zh, parent_id,
    show_order, delete_status, description
    )
    values (#{nameZh,jdbcType=VARCHAR},
    #{parentId,jdbcType=SMALLINT},
    #{showOrder,jdbcType=SMALLINT},
    #{deleteStatus,jdbcType=BIT},
    #{description,jdbcType=VARCHAR}
    )
    </insert>

      分析,其实就是在原先mybatis的使用情况下。添加了

    order="BEFORE" keyProperty="id"

      keyColumn的值(id)就是数据库中相应的字段

      keyProperty是Java对象的属性名。

    mysql插入数据后获得主键

      针对自增主键的表,在插入时不需要主键,而是在插入过程自动获取一个自增的主键,比如MySQL,可以采用如下两种配置方式:

    <insert id="add" parameterType="vo.Category" useGeneratedKeys="true" keyProperty="id">
    
    insert into category (name_zh, parent_id,
    
    show_order, delete_status, description
    
    )
    
    values (#{nameZh,jdbcType=VARCHAR},
    
    #{parentId,jdbcType=SMALLINT},
    
    #{showOrder,jdbcType=SMALLINT},
    
    #{deleteStatus,jdbcType=BIT},
    
    #{description,jdbcType=VARCHAR}
    
    )
    
    </insert>

    或者

    <insert id="add" parameterType="vo.Category">
    <selectKey resultType="java.lang.Short" order="AFTER" keyProperty="id">
    SELECT LAST_INSERT_ID() AS id
    </selectKey>
    insert into category (name_zh, parent_id,
    show_order, delete_status, description
    )
    values (#{nameZh,jdbcType=VARCHAR},
    #{parentId,jdbcType=SMALLINT},
    #{showOrder,jdbcType=SMALLINT},
    #{deleteStatus,jdbcType=BIT},
    #{description,jdbcType=VARCHAR}
    )
    </insert>

      致谢:感谢您的阅读!

  • 相关阅读:
    组合数据类型练习
    实验四、递归下降语法分析实验
    词法分析实验报告
    Python基础综合练习
    大数据概述
    一个词法分析程序
    linux基本命令
    有限自动机的构造与识别
    我对编译原理的小小了解
    Scrum 冲刺博客 2
  • 原文地址:https://www.cnblogs.com/0201zcr/p/4990610.html
Copyright © 2020-2023  润新知