明細表批量新增,修改,刪除sql

當咱們在新增一條主表的時候,每每有不少明細表,有的人在新增明細表的時候就是在程序中循環新增明細表。java

這樣作的問題就是效率很低,由於咱們要屢次鏈接數據庫。sql

因此咱們要用到sql的批量新增,其實就是傳入一個明細list,而後在sql中循環執行。數據庫

批量新增:(service層)app

@Transactional(rollbackFor = Exception.class)
	@Override
	public void save(FixedAssetsRequisition fixedAssetsRequisition,List<FixedAssetsreRuisitionDetails> detailss,String filesId)throws Exception{
		dao.save("FixedAssetsRequisitionMapper.save", fixedAssetsRequisition);//主表
		 if(!"".equals(filesId)){
             String[] fileId = filesId.split(",");
             fileService.update(fixedAssetsRequisition.getId(), fileId);
         }
		 if (detailss != null && detailss.size() > 0) { 
	            dao.batchSave("FixedAssetsreRuisitionDetailsMapper.save",detailss );//批量新增明細表
	        }
	}

mapper.xmlide

<!-- 字段值 -->
	<sql id="FieldValueList">
		#{item.id},
		#{item.purchaseContent},	
		#{item.quantity},	
		#{item.referencePrice},	
		#{item.referenceTotalPrice},	
		#{item.fixedAssetsreRuisitionId}
		
	</sql>
	<!-- 新增-->
	<insert id="save" parameterType="java.util.List">
		insert into 
	<include refid="tableName"></include>
		(
	<include refid="Field"></include>
		) values  
			<foreach collection="list"  item="item" index="index" separator=",">  
				(<include refid="FieldValueList"></include>)
			</foreach>
	</insert>

示例爲:ui

INSERT into sys_department(ID,NAME,NAME_EN,CODE) VALUES('3','LI','LI01','JIAN01'),('4','LI2','LI2','JIAN2')

批量修改:(批量修改咱們是採用先刪除明細表,再從新批量新增明細表)xml

if (detailss != null && detailss.size() > 0) { 
            fixedAssetsRequisitionDetailsService.deleteByFarId(fixedAssetsRequisition.getId());
            dao.batchSave("FixedAssetsreRuisitionDetailsMapper.save",detailss );
        }

批量刪除:(咱們經過主表id來刪除多個已主表id爲外鍵的明細記錄)get

相關文章
相關標籤/搜索