mybatis 如何在 mapper 中实现 insertorupdate 的逻辑

想在mybatis 的 mapper 中实现 insert or update 的逻辑,如何实现 ?
第一步 select count
第二步 判断 count ,如果 0 ,insert ,如果有 update
这个逻辑要封装在一个 sql中,而不是 在service 中调用多个 dao 实现。

请教 ,感谢 。

同问。。。。。。。



select count(*) from ann_rep_e_baseinfo where ANCHEID = #{anCheId}


insert into ann_rep_e_baseinfo (ANCHEID, PRIPID, AnCheDate,
AnCheYear, RegNO, UniSCID,
EntName, EntType, Tel,
Addr, PostalCode, Email,
BusSt, BusSt_CN, EmpNum,
EmpNumDis, ColGraNum, ColEmplNum,
RetSolNum, RetEmplNum, DisPerNum,
DisEmplNum, UneNum, UneEmplNum,
AssGro, AssGroDis, LiaGro,
LiaGroDis, VendInc, VendIncDis,
MaiBusInc, MaiBusIncDis, ProGro,
ProGroDis, NetInc, NetIncDis,
RatGro, RatGroDis, TotEqu,
TotEquDis, NumParM, ParIns,
ParIns_CN, ResParMSign, ResParSecSign,
DependentEntName, LastModifiedTime)
values (#{anCheId,jdbcType=INTEGER}, #{pripId,jdbcType=VARCHAR}, #{anCheDate,jdbcType=TIMESTAMP},
#{anCheYear,jdbcType=INTEGER}, #{regNo,jdbcType=VARCHAR}, #{uniscId,jdbcType=VARCHAR},
#{entName,jdbcType=VARCHAR}, #{entType,jdbcType=VARCHAR}, #{tel,jdbcType=VARCHAR},
#{addr,jdbcType=VARCHAR}, #{postalCode,jdbcType=INTEGER}, #{email,jdbcType=VARCHAR},
#{busSt,jdbcType=VARCHAR}, #{busSt_CN,jdbcType=VARCHAR}, #{empNum,jdbcType=INTEGER},
#{empNumDis,jdbcType=VARCHAR}, #{colGraNum,jdbcType=INTEGER}, #{colEmplNum,jdbcType=INTEGER},
#{retSolNum,jdbcType=INTEGER}, #{retEmplNum,jdbcType=INTEGER}, #{disPerNum,jdbcType=INTEGER},
#{disEmplNum,jdbcType=INTEGER}, #{uneNum,jdbcType=INTEGER}, #{uneEmplNum,jdbcType=INTEGER},
#{assGro,jdbcType=DECIMAL}, #{assGroDis,jdbcType=VARCHAR}, #{liaGro,jdbcType=DECIMAL},
#{liaGroDis,jdbcType=VARCHAR}, #{vendInc,jdbcType=DECIMAL}, #{vendIncDis,jdbcType=VARCHAR},
#{maiBusInc,jdbcType=DECIMAL}, #{maiBusIncDis,jdbcType=VARCHAR}, #{proGro,jdbcType=DECIMAL},
#{proGroDis,jdbcType=VARCHAR}, #{netInc,jdbcType=DECIMAL}, #{netIncDis,jdbcType=VARCHAR},
#{ratGro,jdbcType=DECIMAL}, #{ratGroDis,jdbcType=VARCHAR}, #{totEqu,jdbcType=DECIMAL},
#{totEquDis,jdbcType=VARCHAR}, #{numParM,jdbcType=DECIMAL}, #{parIns,jdbcType=VARCHAR},
#{parIns_CN,jdbcType=VARCHAR}, #{resParMSign,jdbcType=VARCHAR}, #{resParSecSign,jdbcType=VARCHAR},
#{dependentEntName,jdbcType=VARCHAR}, #{lastModifiedTime,jdbcType=TIMESTAMP})

int saveOrUpdate(Map<String, Object> record);

图片说明

int saveOrUpdate(Map record);