<insert id="updateMaterial" parameterType="java.util.Map">
<foreach collection="matList" index="index" item="item" open=" "
separator=";" close=" ">
if exists ( select * from wit_selection.zc_scmMaterial where matcode=#{item.matcode})
begin
update
wit_selection.zc_scmMaterial
set matcode=#{item.matcode},name=#{item.name},licenseNum=#{item.licenseNum},manufName=#{item.manufName},prodPlace=#{item.prodPlace},spec=# {item.spec},dosage=#{item.dosage},
price=#{item.price},retailPrice=#{item.retailPrice},storeNum=#{item.storeNum},sellState=#{item.sellState},batchNum=#{item.batchNum},productDate=# {item.productDate},
createTime=#{item.createTime},validDate=#{item.validDate} where matcode=#{item.matcode}
end
else
begin
insert into wit_selection.zc_scmMaterial (matcode,name,licenseNum,manufName,prodPlace,spec,dosage,
price,retailPrice,storeNum,sellState,batchNum,productDate,validDate,supplierId,createTime)
values(
#{item.matcode},
#{item.name},
#{item.licenseNum},
#{item.manufName},
#{item.prodPlace},
#{item.spec},
#{item.dosage},
#{item.price},
#{item.retailPrice},
#{item.storeNum},
#{item.sellState},
#{item.batchNum},
#{item.productDate},
#{item.validDate},
#{item.supplierId},
#{item.createTime}
)
end
</foreach>
<foreach collection="matList" index="index" item="item" open=" "
separator=";" close=" ">
if exists ( select * from wit_selection.zc_scmMaterial where matcode=#{item.matcode})
begin
update
wit_selection.zc_scmMaterial
set matcode=#{item.matcode},name=#{item.name},licenseNum=#{item.licenseNum},manufName=#{item.manufName},prodPlace=#{item.prodPlace},spec=# {item.spec},dosage=#{item.dosage},
price=#{item.price},retailPrice=#{item.retailPrice},storeNum=#{item.storeNum},sellState=#{item.sellState},batchNum=#{item.batchNum},productDate=# {item.productDate},
createTime=#{item.createTime},validDate=#{item.validDate} where matcode=#{item.matcode}
end
else
begin
insert into wit_selection.zc_scmMaterial (matcode,name,licenseNum,manufName,prodPlace,spec,dosage,
price,retailPrice,storeNum,sellState,batchNum,productDate,validDate,supplierId,createTime)
values(
#{item.matcode},
#{item.name},
#{item.licenseNum},
#{item.manufName},
#{item.prodPlace},
#{item.spec},
#{item.dosage},
#{item.price},
#{item.retailPrice},
#{item.storeNum},
#{item.sellState},
#{item.batchNum},
#{item.productDate},
#{item.validDate},
#{item.supplierId},
#{item.createTime}
)
end
</foreach>
</insert>
开始的时候判断的是:
if exists ( select count(*) from wit_selection.zc_scmMaterial where matcode=#{item.matcode})
但是查不到的话count(*)返回的是0,此时if exists 判断还是存在的,所以改为
if exists ( select* from wit_selection.zc_scmMaterial where matcode=#{item.matcode})
此时查不出来是null ,else就会执行了。