我是iBatis的新手。在我的项目中,我们使用iBatis来保存Oracle DB中的java对象。我有一个类ClassA,它有3列:id,name和description。数据将保留在TableA中。 DB中有一个序列可以为此表中的id列生成值。我们将insert语句写入此表,如下所示,
<insert id="insertTableA" parameterClass="com.ClassA">
<selectKey resultClass="java.lang.Long" keyProperty="id">
SELECT seq_TableA.nextval as id FROM dual
</selectKey>
INSERT INTO TableA(ID, NAME, DESCRIPTION) VALUES (#id#, #name#, #description#)
</insert>
这很好。
但是由于我们的内部UI框架限制,我们不得不改变一些设计。因此,我们需要首先从序列生成id long,在ClassA的实例中设置该值以及名称和描述,然后插入到DB中。因此,在这种情况下,insert语句不需要selectKey属性。 id,name和description值在对象中。当我更新下面的查询时,它会抛出Null Pointer Exception。
<insert id="insertTableA" parameterClass="com.ClassA">
INSERT INTO TableA(ID, NAME, DESCRIPTION) VALUES (#id#, #name#, #description#)
</insert>
我们如何在不使用a的情况下将数据插入表中。我首先从序列生成密钥,用包括id的所有值填充对象,并尝试从Java调用语句,如下所示,
getSqlTemplate().insert("process.insertTableA", instanceClassA);
欢迎提出任何指示,
谢谢,SD
只是为了确定,你是否在getId()
类中包含了ClassA
方法,以便它返回id
字段的值?