本文共 1637 字,大约阅读时间需要 5 分钟。
在做excel导入的时候需要用到批量导入,以前没用过oracle数据库,使用过程中才发现mysql的写法在oracle中是不正确的。
先介绍下foreach 中属性的表达意思:
1、 collection :collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合。
2、item : 表示在迭代过程中每一个元素的别名。
3、index :表示在迭代过程中每次迭代到的位置
4、open :前缀
5、close :后缀
6、separator :分隔符,表示迭代时每个元素之间以什么分隔
先上一下mybatis中foreach的代码:
INSERT INTO mds_quota_detail( id, mds_quota_id, serial, mds_item_id, item_code, item_name, normal_field, model_num, specs, quota, mds_unit_id, classify, remarks ) VALUES ( #{id}, #{mdsQuotaId}, #{serial}, #{itemId}, #{itemCode}, #{itemName}, #{normalField}, #{modelNum}, #{specs}, #{quota}, #{mdsUnitId}, #{classify}, #{remarks} )
oracle中foreach的代码:
INSERT INTO mds_quota_detail( id, mds_quota_id, serial, mds_item_id, item_code, item_name, normal_field, model_num, specs, quota, mds_unit_id, classify, remarks ) ( SELECT #{MdsQuotaDetail.id}, #{MdsQuotaDetail.mdsQuotaId}, #{MdsQuotaDetail.serial}, #{MdsQuotaDetail.itemId}, #{MdsQuotaDetail.itemCode}, #{MdsQuotaDetail.itemName}, #{MdsQuotaDetail.normalField}, #{MdsQuotaDetail.modelNum}, #{MdsQuotaDetail.specs}, #{MdsQuotaDetail.quota}, #{MdsQuotaDetail.mdsUnitId}, #{MdsQuotaDetail.classify}, #{MdsQuotaDetail.remarks} FROM dual )
总结:1、在oracle中是没有values的。
2、在oracle中separator的值为union all,mysq'中是","。
3、在oracle中foreach中使用SELECT ... FROM dual。
4、在foreach中#{属性值},oracle中必须是item的值点属性。
如有哪里不对的地方,欢迎在评论里指出
转载地址:http://ycfoi.baihongyu.com/