博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ibatis自动生成键selectkey(Oracle、MYSQL、MSSQL、SQLITE)
阅读量:6869 次
发布时间:2019-06-26

本文共 1334 字,大约阅读时间需要 4 分钟。

hot3.png

我们在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。

有些是预先生成(pre-generate)主键的,如Oracle和PostgreSQL;有些是事后生成(post-generate)主键的,如MySQL和SQL Server。但不管是哪种方式,我们都可以用ibatis的节点来获取语句所产生的主键。

oracle例子:

<insert id="insertProduct-ORACLE" parameterClass="product">  

    <selectKey resultClass="int" type="pre" keyProperty="id" >  

        SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL  

    </selectKey>  

    insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)  

</insert>

sql-server例子:

<insert id="insertProduct-MS-SQL" parameterClass="product">  

    insert into PRODUCT (PRD_DESCRIPTION) values (#description#)  

    <selectKey resultClass="int" type="post" keyProperty="id" >  

        select @@IDENTITY as value  

    </selectKey>  

</insert>

mysql例子:

<insert id="insertProduct-MYSQL" parameterClass="product">  

    insert into PRODUCT (PRD_DESCRIPTION) values (#description#)  

    <selectKey resultClass="int" type="post" keyProperty="id" >  

        select LAST_INSERT_ID() as value  

    </selectKey>  

</insert>

SQLite例子:

    <insert id="Create" parameterClass="Subject">
      INSERT INTO SUBJECT
      (SubjectName,QuestionCount,IsNowPaper)
      VALUES(#SubjectName#,#QuestionCount#,#IsNowPaper#)
      <selectKey resultClass="int" type="post" property="SubjectId">
        SELECT seq
        FROM sqlite_sequence
        WHERE (name = 'SUBJECT')
      </selectKey>
    </insert>
注意:name = 'SUBJECT'中SUBJECT为表名称

转载于:https://my.oschina.net/u/129971/blog/184723

你可能感兴趣的文章
Python Python 正则 取中括号值
查看>>
springMVC-接收数据-参数绑定
查看>>
OOM问题定位方法
查看>>
hadoop day 4
查看>>
SCVMM 2012 SP1 Beta 体验(一)安装准备
查看>>
Lync Server 2013功能部署系列之七 实现Lync Server 与Exchange Server集成的功能
查看>>
老王学Linux-NFS
查看>>
这一次,我们用最详细的方式解析Android消息机制的源码
查看>>
bash之条件判断语句及循环语句
查看>>
shell-5:case比if(elif else)方便
查看>>
R基础数据类型2DAY
查看>>
shell脚本之 if,case,for的用法
查看>>
loadrunner12--tree
查看>>
安全多方计算(MPC)从入门到精通:经典案例
查看>>
自动化运维之Ansible安装及基本模块应用
查看>>
Linux文件权限详解
查看>>
OSPF 多区域原理与配置
查看>>
面试题2
查看>>
linux运维社区站点收集
查看>>
坚果云云盘告诉你如何保护自己的文件不被泄露?
查看>>