spring与ibatis整合后在getSqlMapClientTemplate()方法中提供了一系列CRUD方法,其中insert返回一个Object型的主键,一直用着都很正常,可是在oracle中增加了序列,又修改了配置文件,就一直抛NullPointException
检查了数遍Dao跟Service,都没问题(就是怕类似少标点这样的小错误),而且数据也可以添加,就觉得应该是配置文件的问题,仔细查看了下文档,原来<insert>中还包含一个<selectKey>可以配置序列
修改完毕,程序没问题啦。
-----------------分割线--------------------------------------
如果使用后生成主键的数据库,MySql,SQLServer配置文件应为
当然,前提是PERMISSIONID字段被设置为自增属性
<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字段被设置为自增属性