通过selectKey在插入操作前或者操作后获取key值,做为字段插入或返回字段。(此段代码获取的序列值id作为字段值插入到实体类中返回)
<insert id="insert">
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT id FROM myTable
</selectKey>
INSERT INTO myTable VALUES(#{id}, #{name})
</insert>
useGeneratedKeys
如果数据库支持自增长主键字段(比如mysql、sql server)设置useGeneratedKeys=”true”和keyProperty="Id",id 是表的主键名,这样就可以插入主键id值
oracle则不支持自增长id,设置useGeneratedKey=”false”,如果设置true则会有报错信息。通过nextval函数,如SEQ_table.Nextval生成id
<insert id="addCover" parameterType="java.util.Map" useGeneratedKeys="true" keyProperty="Id">
insert into cover(title,path,update_time)
values(#{title},#{path},#{update_time})
</insert>
int addCover(Map<String,Object> map);