項目中使用的mybatis數據庫是用的Oracle,在將數據插入從表的時候因為一個id對應了多條記錄,為了不影響數據庫性能,所以需要將數據一次性插入表中。
Java中使用map進行傳值,分別存放id和list
List<AddressSubtable> list2 = mailDetailService.queryOrgPsgType(address); List<AddressSubtable> list3 = addressLibraryService.querySubtable(id); //去掉地址庫從表已有的數據 list2.removeAll(list3); if (list2.size()>0) { Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("id", id); map2.put("addressSubtableList", list2); addressLibraryService.insertSubtable(map2); }
xml文件里代碼:
<insert id="insertSubtable" parameterType="java.util.HashMap"> insert into tb_org_psg_addr (v_id,v_mail_type,v_deal_type,v_org,v_road) ( <foreach collection ="addressSubtableList" item="addressSubtable" index= "index" separator ="UNION ALL"> select #{id,jdbcType=VARCHAR}, #{addressSubtable.mailType}, #{addressSubtable.dealType}, #{addressSubtable.org}, #{addressSubtable.road} from dual </foreach > ) </insert>
