使用MyBatis的sqlMap.insert()方法,数据插入成功,但返回的结果总是null。解决方法:
将原来的insert语句加上<selectKey>标签
<insert id="TbPyBasic.insert" >
<![CDATA[
INSERT INTO TB_PY_BASIC (
ph_id ,
device_id ,
physical_name ,
device_type ,
cr_user ,
cr_time ,
status ,
rs_type ,
alarm_state ,
ip_address ,
os_type ,
update_time
) VALUES (
#phId# ,
#deviceId# ,
#physicalName# ,
#deviceType# ,
#crUser# ,
#crTime# ,
#status# ,
#rsType# ,
#alarmState# ,
#ipAddress# ,
#osType# ,
#updateTime#
)
]]>
<!--
mysql: type="post" SELECT select last_insert_id()
sqlserver: type="post" SELECT @@identity AS ID
oracle: type="pre" SELECT sequenceName.nextval AS ID FROM DUAL
DB2: type="pre" values nextval for sequenceName
-->
<selectKey resultClass="java.lang.String" type="post" keyProperty="phId" >
select last_insert_id() as phId
</selectKey>
</insert>
其中<selectKey>中的keyProperty="phId" 为相应表的主键名。保证该属性的类型和javabean中
相应属性类型一致。
但若该属性id为int,则<selectKey>中的resultClass="int",接着将sqlMap.insert返回的object转换为int类型。