我是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中。因此,在这种情况下,插入语句不需要 selectKey 属性。 id ,名称和描述值位于对象中。当我更新下面的查询时,它会抛出 空指针异常 。
<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
答案 0 :(得分:0)
可以肯定的是,您是否在getId()
课程中添加了ClassA
方法,以便它返回id
字段的值?