数据库没有自带的save()方法时,但是需要用到存储后的实体类id
方式一:
<insert id="savef" parameterType="XXX.f" useGeneratedKeys="true" keyProperty="id">
insert into f
(jsonid,userid,title,author,path,status,resultpath,inserttime,updatetime,zifucnt,totalcnt) values (#{f.jsonid}
,#{f.userid},#{f.title},#{f.author},#{f.path},#{f.status},#{f.resultpath}
,#{f.inserttime},#{f.updatetime},#{f.zifucnt},#{f.totalcnt});
</insert>
// 其中 useGeneratedKeys="true" keyProperty="id"就是将id存储在f的id中,返回值是1,成功插入一条数据
方法二:
<insert id="savef" parameterType="xxx.f">
insert into f
(jsonid,userid,title,author,path,status,resultpath) values (#{f.jsonid}
,#{f.userid},#{f.title},#{f.author},#{f.path},#{f.status},#{f.resultpath});
<selectKey keyProperty="f.id" keyColumn="id" order="AFTER" resultType="java.lang.Integer">
select last_insert_id();
</selectKey>
</insert>
order可以被设置为 BEFORE 或 AFTER。
BEFORE => 它会首先选择主键,设置 keyProperty 然后执行插入语句;
AFTER=>先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。
注意:keyProperty=“f.id” ;写成:keyProperty="id"得不到值,问就是试过【哭泣】