`

selectKey

 
阅读更多

很多数据库支持自动生成主键的数据类型。不过这通常(并不总是)是个私有的特性。

SQL Map 通过<insert>的子元素<selectKey>来支持自动生成的键值。它同时支持预生成(如

Oracle)和后生成两种类型(如 MS-SQL Server)。下面是两个例子:

 

 

< !—Oracle SEQUENCE Example -->

 

<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">    

  insert into PRODUCT (PRD_ID,PRD_DESCRIPTION)   

  values (#id#,#description#)  

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

    SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL  

  </selectKey>  

</insert>

 

 

<!— Microsoft SQL Server IDENTITY Column Example -->

 

<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">   

  insert into PRODUCT (PRD_DESCRIPTION)   

  values (#description#)   

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

    SELECT @@IDENTITY AS ID   

  </selectKey>   

</insert>  

 

 

<!-- Mysql Auto Increased ID-->

 

<insert id="insertProduct-Mysql" parameterClass="com.domain.Product">  

  insert into PRODUCT(PRD_DESCRIPTION)  

  values (#description#)  

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

    SELECT LAST_INSERT_ID()  

  </selectKey>  

</insert>  

 

分享到:
评论

相关推荐

    Mybatis示例之SelectKey的应用

    Mybatis示例之SelectKey的应用 Mybatis是一种流行的持久层框架,提供了简洁的数据持久化解决方案。今天我们将讨论Mybatis的一个重要特性:SelectKey。SelectKey是Mybatis提供的一种机制,用于解决Insert数据时不...

    MyBatis主键自动生成方法.pdf

    MyBatis提供了一种机制来处理这种需求,主要通过`useGeneratedKeys`和`selectKey`元素实现。 1. `useGeneratedKeys="true"`:这是针对支持自动增长主键的数据库,如MySQL。在`&lt;insert&gt;`标签内设置`useGeneratedKeys...

    SAP Hana 创建序列 +mybatis查询

    SAP HANA 创建 sequence,及查询Dummy,和Mybaits 查询

    MyBatis学习之三动态SQL语句[借鉴].pdf

    本篇将深入探讨MyBatis的动态SQL语句,主要关注`selectKey`和`if`标签的使用。 ### 3.1 `selectKey`标签 `selectKey`标签主要用于在插入数据时自动生成主键,尤其是在Oracle中使用序列或MySQL中使用函数生成ID的...

    C语言的atm银行存取系统

    #include "stdio.h" struct atmsystem /* 定义结构体存放用户资料 */ { char account[5]; /* 帐号 */ char password[7];... float allmoney;...if(SelectKey&gt;52||SelectKey) /* 检查选项的有效性 */

    SparkSQL相关语句总结.docx

    但是,SparkSQL 支持 `select * from (select key from src union all select key from test) aa;` 这样的语句。 3. Intersect/Minus/Except SparkSQL 不支持 Intersect、Minus 和 Except 语句。 4. Join ...

    SqlMapClient对象.docx

    在Java开发中,iBatis是一个优秀的持久层框架,它允许开发者将SQL语句和Java...通过`&lt;selectKey&gt;`、`parameterClass`和`parameterMap`等元素,iBatis允许开发者灵活地控制SQL执行和结果映射,极大地简化了数据库操作。

    iBATIS有关资料

    需要注意的是,`&lt;selectKey&gt;`标签的位置很关键,它通常被放在`INSERT`语句之后,以确保在插入数据后立即获取新生成的主键值。 总结来说,iBATIS是一个强大的工具,它通过XML或注解的方式将SQL语句与Java代码分离,...

    我大抵是卷上瘾了,横竖睡不着!竟让一个Bug,搞我两次!.doc

    "Mybatis 中 selectKey 配置的重要性和事务处理的注意点" 从今天的文章中,我们可以看到,小傅哥在手写 Mybatis 的时候,遇到了一个问题,即在插入数据的时候,返回的索引值总是 0,而不是最后插入的索引值。这个...

    ATM自动取款机

    selectkey = getch(); } while (selectkey != '1' && selectkey != '2' && selectkey != '3' && selectkey != '4'); ``` - 使用`do-while`循环确保用户必须输入有效的选项。 - 通过`clrscr()`清空屏幕,显示用户...

    mybatis教程之动态sql语句[收集].pdf

    在给出的 XML 代码中,`&lt;selectKey&gt;` 标签内的 SQL 语句是 `select nextval('student')`,这是 MySQL 中的一个假设的函数,实际应用中应替换为 MySQL 自带的主键生成函数,如 `LAST_INSERT_ID()`,或者自定义的存储...

    mybatis自增主键文档

    这里`&lt;selectKey&gt;`元素会在插入语句之前执行,获取Sequence的下一个值,并将其设置到`User`对象的`id`字段。然后才执行插入语句。 总的来说,MyBatis提供了一套灵活的机制来处理不同数据库的自增主键。对于Oracle...

    ibatis 中sqlMap配置

    对于序列主键(如Oracle、DB2中的Sequence),需要在插入语句之前配置`&lt;selectKey&gt;`标签来获取主键值。例如: ```xml &lt;selectKey resultClass="long" keyProperty="sctId"&gt; SELECT SEQ_TEST.NEXTVAL FROM DUAL...

    根据相同的key合并值(行转列)

    SELECT key, SUM(value) as total_value FROM table_name GROUP BY key; ``` 这会返回一个新的结果集,其中每一行代表一个唯一的key,`total_value`是该key对应所有记录的`value`字段之和。 描述中提到的“博文...

    08_传智播客ibatis教程_sql主键生成方式

    在Ibatis配置中,可以通过`&lt;selectKey&gt;`标签来指定使用序列生成主键。 2. **身份列(Identity)**:在MySQL、SQL Server等支持自动增长的数据库中,可以设置某一列为主键并自动递增。在Ibatis中,可以在插入语句后...

    mysql中实现sequence.pdf

    在iBatis(现更名为MyBatis)框架中,可以使用`&lt;selectKey&gt;`标签来直接获取新插入记录的`AUTO_INCREMENT`ID,这样就无需额外编写代码来获取这个ID。例如,以下是一个iBatis的SQL映射配置: ```xml insert into ...

    sqlmap配置.pdf

    例如:&lt;insert id="insertAccount" parameterClass="Account"&gt; &lt;selectKey resultClass="long" keyProperty="sctId"&gt; SELECT SEQ_TEST.NEXTVAL FROM DUAL &lt;/selectKey&gt;...。在 MySQL 中,可以使用 LAST_INSERT_ID() ...

    mybatis获取自增主键的值

    对于某些不支持`useGeneratedKeys`属性的数据库,MyBatis提供了`&lt;selectKey&gt;`元素来显式执行一个查询来获取新生成的主键。这通常在插入后立即执行,确保获取到正确的值。例如: ```xml &lt;selectKey keyProperty...

    ibaits配置总结[参考].pdf

    而对于MySQL等支持自增主键的数据库,通常在插入语句后配置`&lt;selectKey&gt;`,如`SELECT LAST_INSERT_ID()`,以获取新插入行的主键。 **参数类(Parameter Class)**在iBatis中扮演着重要角色。插入语句的参数可以是类...

Global site tag (gtag.js) - Google Analytics