今天在用ibatis selectKey 生成 oracle sequence 的时候 发现一个问题。其实就是相为SHIPMENT_HISTORY表加入一个主键sequence id shipmentHistoryId,加入一条记录,然后返回这个sequence id xml 代码 insert into SHIPMENT_HISTORY (SHIPMENT_ID, RECORD_CREATED_DATE, REMARK) values (#shipmentId:DECIMAL#, #recordCreatedDate:DATE#, #remark:VARCHAR#) select SHIPMENT_HISTORY_ID_SEQUENCE.nextVal from dual 并且这段statement是由Abator自动生成的,蛮以为肯定不会出错的 。 但是这个 statement在运行的时候报错了 ,说不能插入 能null数值插入到SHIPMENT_HISTORY表中 ,说明这个selectKey就根本没有发挥出作用 。查找了一下ibatis的中文文档 ,上面由下面的说明如下 : 很多数据库支持自动生成主键的数据类型。不过这通常(并不总是)是个私有的特性。SQL Map通过的子元素来支持自动生成的键值。它同时支持预生成(如Oracle)和后生成两种类型(如MS-SQL Server)。下面是两个例子:
Tags:
ibatis selectKey 用法 问题