mybatis番外篇(一)自动生成键selectkey

来源:互联网 发布:淘宝客服热线 编辑:程序博客网 时间:2024/06/09 20:19

我们在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。
有些是预先生成(pre-generate)主键的,如Oracle和PostgreSQL;有些是事后生成(post-generate)主键的,如MySQL和SQL Server。但不管是哪种方式,我们都可以用ibatis的节点来获取语句所产生的主键。


1、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>


2、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>


3、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>

2、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><span style="font-family: 微软雅黑, 'Microsoft YaHei'; background-color: rgb(255, 255, 255);">  </span>


注意:name = 'SUBJECT'中SUBJECT为表名称

0 0
原创粉丝点击