如果数据库中主键自增:keyProperty网上包括书本写的都是id(坑爹)(如果传的是一个Specification对象,要写成spec.specid)
public int add(@Param("spec") Specification spec);
<insert id="add" useGeneratedKeys="true" keyProperty="spec.specid" > INSERT into specification(userid,name,type,version,development_unit,announce_time,completetime,docperson, chargeperson,description,preface,usescope,ref_desc,attachment,docpath,allowdown,shortName, pdfpath,modifytime,versionType,docTime,saveType,isInternet) VALUES (#{spec.userid},#{spec.name},#{spec.type},#{spec.version},#{spec.developmentUnit},#{spec.announceTime},#{spec.completetime},#{spec.docperson}, #{spec.chargeperson},#{spec.description},#{spec.preface},#{spec.usescope},#{spec.refDesc},#{spec.attachment},#{spec.docpath},#{spec.allowdown},#{spec.shortName}, #{spec.pdfpath},#{spec.modifytime},#{spec.versionTypeId},#{spec.docTime},#{spec.saveType},#{spec.isInternet}) </insert>
如果数据库中主键没有自增,需要自定义生成规则:
<insert id="add" useGeneratedKeys="true" keyProperty="spec.specid" >
<selectKey keyProperty="specid" resultType="int" order="BEFORE"> SELECT if(max(specid) is null,1,max(specid)+2) as newId from specification </selectKey>INSERT into specification(userid,name,type,version,development_unit,announce_time,completetime,docperson, chargeperson,description,preface,usescope,ref_desc,attachment,docpath,allowdown,shortName, pdfpath,modifytime,versionType,docTime,saveType,isInternet) VALUES (#{spec.userid},#{spec.name},#{spec.type},#{spec.version},#{spec.developmentUnit},#{spec.announceTime},#{spec.completetime},#{spec.docperson}, #{spec.chargeperson},#{spec.description},#{spec.preface},#{spec.usescope},#{spec.refDesc},#{spec.attachment},#{spec.docpath},#{spec.allowdown},#{spec.shortName}, #{spec.pdfpath},#{spec.modifytime},#{spec.versionTypeId},#{spec.docTime},#{spec.saveType},#{spec.isInternet}) </insert>