ibatis中主键的返回

spring与ibatis整合后在getSqlMapClientTemplate()方法中提供了一系列CRUD方法,其中insert返回一个Object型的主键,一直用着都很正常,可是在oracle中增加了序列,又修改了配置文件,就一直抛NullPointException
<insert id="addPermission" parameterClass="Permission">
INSERT INTO P_PERMISSION
(PERMISSIONID,PERMISSIONINFO,PERMISSIONNAME,PERMISSIONENNAME,URL)
VALUES
(SEQ_P_PERMISSION.NEXTVAL,#permissionInfo#,#permissionName#,
#permissionEnName#,#url#)
</insert>

检查了数遍Dao跟Service,都没问题(就是怕类似少标点这样的小错误),而且数据也可以添加,就觉得应该是配置文件的问题,仔细查看了下文档,原来<insert>中还包含一个<selectKey>可以配置序列
<insert id="addPermission" parameterClass="Permission">
<selectKey resultClass="int" keyProperty="permissionId">
SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL
</selectKey>
INSERT INTO P_PERMISSION
(PERMISSIONID,PERMISSIONINFO,PERMISSIONNAME,PERMISSIONENNAME,URL)
VALUES
(#permissionId#,#permissionInfo#,#permissionName#,#permissionEnName#,#url#)
</insert>

修改完毕,程序没问题啦。
-----------------分割线--------------------------------------
如果使用后生成主键的数据库,MySql,SQLServer配置文件应为
<insert id="addPermission" parameterClass="Permission">

INSERT INTO P_PERMISSION
(PERMISSIONID,PERMISSIONINFO,PERMISSIONNAME,PERMISSIONENNAME,URL)
VALUES
(#permissionId#,#permissionInfo#,#permissionName#,#permissionEnName#,#url#)
<selectKey resultClass="int" keyProperty="permissionId">
SELECT @@IDENTITY AS PERMISSIONID
</selectKey>
</insert>

当然,前提是PERMISSIONID字段被设置为自增属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值