今天工作中用到了ibatis,录入一条记录之后,需要返回主键。详情如下:
使用的ibatis版本为:
<dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>ibatis-sqlmap</artifactId>
<version>2.3.4.726</version>
</dependency>
xml映射配置如下:
<insert id="addUnFreezeRecord" parameterClass="unFreezeRecord">
insert into store_unfreeze_record(product_no,storage,BEFORE_FREEZE_NUMBER,AFTER_FREEZE_NUMBER,operator)
values
(#productNo#,#storage#,#beforeFreezeNumber#,#afterFreezeNumber#,#operator#)
<selectKey resultClass="java.lang.String" keyProperty="id">
SELECT LAST_INSERT_ID() as id
</selectKey>
</insert>
接收:
@Override
public String addUnFreezeRecord(UnFreezeRecord unFreezeRecord) {
Object result = this.getSqlMapClientTemplate().insert("stock.addUnFreezeRecord", unFreezeRecord);
return unFreezeRecord.getId();
}
使用的sqlMapClientTemplate 在 “org.springframework.orm.ibatis.support”包下,spring使用的版本为:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.5</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
注:
1、xml中,返回类型和Java接收类型需要一致。例子中用的都是String
2、接收主键值时,使用的是SqlMapClientTemplate的insert方法
3、主键值并不是直接的返回值,而是会设置到指定的字段中,例子中用的是id,故接收时用:unFreezeRecord.getId()