<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap namespace="Contact">
<insert id="insert" parameterClass="com.bonc.POJO.Contact">
<selectKey resultClass="int" keyProperty="id" type="pre">
<![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS id FROM DUAL]]>
</selectKey>
insert into contact (firstName,lastName,email) values
(#firstName#, #lastName#, #email#)
</insert>
<!--- Showing all data of table -->
<select id="getAll" resultClass="com.bonc.POJO.Contact">
select * from contact
</select>
</sqlMap>
xml文件 <selectKey resultClass="int" keyProperty="id" type="pre">
<![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS id FROM DUAL]]>
</selectKey>
去了这句话
插入语句改成
insert into contact (id,firstName,lastName,email) values
(#id#,#firstName#, #lastName#, #email#)
则没有问题
初学ibatis
请高人指点
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap namespace="Contact">
<insert id="insert" parameterClass="com.bonc.POJO.Contact">
<selectKey resultClass="int" keyProperty="id" type="pre">
<![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS id FROM DUAL]]>
</selectKey>
insert into contact (firstName,lastName,email) values
(#firstName#, #lastName#, #email#)
</insert>
<!--- Showing all data of table -->
<select id="getAll" resultClass="com.bonc.POJO.Contact">
select * from contact
</select>
</sqlMap>
xml文件 <selectKey resultClass="int" keyProperty="id" type="pre">
<![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS id FROM DUAL]]>
</selectKey>
去了这句话
插入语句改成
insert into contact (id,firstName,lastName,email) values
(#id#,#firstName#, #lastName#, #email#)
则没有问题
初学ibatis
请高人指点
insert
Exception in thread "main" com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in Contact.xml.
--- The error occurred while applying a parameter map.
--- Check the Contact.insert-SelectKey-InlineParameterMap.
--- Check the statement (query failed).
--- Cause: java.sql.SQLException: ORA-02289: 序列不存在 at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.executeSelectKey(SqlMapExecutorDelegate.java:472)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:442)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.insert(SqlMapClientImpl.java:59)
at com.bonc.POJO.IbatisExample.main(IbatisExample.java:19)
Caused by: java.sql.SQLException: ORA-02289: 序列不存在 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:799)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1038)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1133)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:186)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(GeneralStatement.java:205)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173)
... 6 more
<select ...>
<![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS id FROM DUAL]]>
</select>
SELECT SEQ_XXX.CURRVAL AS xxxId from dual
</selectKey>
pre 插入前生成
post插入后生成
首先确保你已经建立了序列