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

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

我们在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。
有些是预先生成(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为表名称

目录
相关文章
|
存储 XML Java
Mybatis使用SelectKey自定义主键
Mybatis使用SelectKey自定义主键
230 0
|
XML Java 数据库连接
Mybatis自动生成增删改查代码
Mybatis自动生成增删改查代码
499 2
|
Java 数据库连接 数据库
MyBatis的逆向工程工具,自动生成数据库对应的POJO实体类、mapper接口、增删改查mapper.xml文件
MyBatis的逆向工程工具,自动生成数据库对应的POJO实体类、mapper接口、增删改查mapper.xml文件
326 0
MyBatis的逆向工程工具,自动生成数据库对应的POJO实体类、mapper接口、增删改查mapper.xml文件
|
SQL Java 数据库连接
MyBatis根据表结构自动生成PO/Mapper代码的最佳实践
MyBatis根据表结构自动生成PO/Mapper代码的最佳实践
1319 0
MyBatis根据表结构自动生成PO/Mapper代码的最佳实践
|
消息中间件 运维 Java
【Mybatis】Mybatis generator自动生成插件如何修改Mapper.xml 的命名空间namespace
这也是在扩展 Mybatis generator 的时候遇到的问题,记录一下; 在上一篇文章 如何继承Mybatis中的Mapper.xml文件很重要的一点就是要让两个Mapper.xml文件的命名空间相同,这样才能够实现继承; 那么既然是自动生成插件,在生成原始 Mapper.xml的时候,我要如何去修改他的命名空间呢? 例如
|
SQL Oracle Java
spring boot 整合MyBatis Generator自动生成动态sql代码
spring boot 整合MyBatis Generator自动生成动态sql代码
825 0
spring boot 整合MyBatis Generator自动生成动态sql代码
|
Java 数据库连接 mybatis
【Mybatis】Mybatis generator自动生成插件如何修改Mapper.xml 的命名空间namespace
【Mybatis】Mybatis generator自动生成插件如何修改Mapper.xml 的命名空间namespace
|
Java 数据库连接 数据格式
Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
概 述 MyBatis Generator (简称 MBG) 是一个用于 MyBatis和 iBATIS的代码生成器。它可以为 MyBatis的所有版本以及 2.2.0之后的 iBATIS版本自动生成 ORM层代码,典型地包括我们日常需要手写的 POJO、mapper xml 以及 mapper 接口等。
2193 0