Oracle-mapper文件 And PL/SQL中的-批量-增 删 改 查
增:Add
PL/SQL客户端:
//批量添加
--字段一样多,命名可以不一样
--PA_TEMP_MATERIAL_DEAL表是PA_MATERIAL_DEAL表的临时表
insert intoPA_TEMP_MATERIAL_DEAL select * from PA_MATERIAL_DEAL;
--字段不一样多
insert intoPA_TEMP_MATERIAL_DEAL
(material_number,provider_code,provider_name,promise_date,num_segpoints,unit_price,currency_code,work_code)
selectimlitm,provider_code,provider_name,promise_date,num_segpoints,unit_price,currency_code,''from PA_MATERIAL_DEAL;
mapper文件:
//批量添加
//Mapper文件中的code
<insertid="addEstPriceInfo" parameterType="java.util.List">
insert intoPA_NOCALAPPLYORDER_ESTPRICE
(
order_number,
order_type,
order_company,
order_line,
provider_code,
provider_name,
work_code,
expected_date,
estimate_price,
create_estimate_time
)
<foreachcollection="noCalApplyOrderPOList" item="item"index="index" separator="union" open="("close=")">
(
select
#{item.order_number},
#{item.order_type},
#{item.order_company},
#{item.order_line},
#{item.provider_code},
#{item.provider_name},
#{item.work_code},
#{item.expected_date},
#{item.estimate_price},
to_char(sysdate,'yyyy-MM-ddHH24:mi:ss')
from dual
)
</foreach>
</insert>
//mapper代码转化为PL/SQL代码
insertintoPA_TEMP_MATERIAL_DEAL
( material_number,provider_code, currency_code,work_code )
(
( select 'SPCL','900000','USD','222' fromdual)
union
( select 'SPCL','900000','CNY','222' fromdual)
)
删:Delete
PL/SQL客户端:
//批量删除
(同mapper代码转化为PL/SQL代码)
deletefromPA_MATERIAL_DEAL A
where(trim(A.imlitm),trim(A.provider_code),trim(A.currency_code))
in
(
(select'11100','201','CNY'from dual)
union
(select'11100','201','JPY'from dual)
)
mapper文件:
//批量删除
/* 批量删除List<对象>*/
//Mapper文件中的code
【不推荐这种Code方式】
<deleteid="deleteEstPriceInfo"parameterType="com.harmontronics.erp.vo.PortalApplyOrderVO">
delete from PA_NOCALAPPLYORDER_ESTPRICE
where(order_number,order_type,order_company,order_line)
in
<foreachcollection="portalApplyOrderVOList" item="item"index="index" separator="union" open="("close=")">
(
select
#{item.order_number},
#{item.order_type},
#{item.order_company},
#{item.order_line}
from dual
)
</foreach>
</delete>
【推荐这种Code方式】
<!--清空当前审核节点表的对应节点记录-->
<deleteid="delAuditCurrentN"parameterType="java.util.List">
delete from PA_AUDIT_CURRENT_NODEIDAwhere exists (
select * from (
<foreachcollection="list"item="item" index="index"separator="union"open="(" close=")">
select
#{item.order_number} order_number,
#{item.order_type} order_type,
#{item.order_company} order_company
from dual
</foreach>
)t where A.order_number =t.order_numberand A.order_type = t.order_type and A.order_company =t.order_company )
</delete>
/* 批量删除List<String> */
//Mapper文件中的code
【不推荐这种Code方式】
<delete id="delete"parameterType="java.util.List">
delete from PA_AUDITSYS_CONFIG
where audit_uuid
in
<foreach collection="list"item="item" index="index" separator="union"open="(" close=")">
(
select
#{item}
from dual
)
</foreach>
</delete>
OR:
【推荐这种Code方式】
<delete id="delete"parameterType="java.util.List">
delete from PA_AUDITSYS_CONFIG
where audit_uuid
in
<foreach collection="list"item="item" index="index" separator=","open="(" close=")">
#{item}
</foreach>
</delete>
//mapper代码转化为PL/SQL代码
deletefromPA_MATERIAL_DEAL A
where(trim(A.imlitm),trim(A.provider_code),trim(A.currency_code))
in
(
(select'11100','201','CNY'from dual)
union
(select'11100','201','JPY'from dual)
)
改:Update
PL/SQL客户端:
--只更新一条字段
update PA_MATERIAL_DEAL
set
(
PA_MATERIAL_DEAL.provider_name,
PA_MATERIAL_DEAL.promise_date,
PA_MATERIAL_DEAL.num_Segpoints,
PA_MATERIAL_DEAL.unit_price
)
=
(
select
'苏州公司',
'20170909',
22,
30.33
from dual
)
where PA_MATERIAL_DEAL.imlitm ='SPCL'and PA_MATERIAL_DEAL.provider_code = '11111'
and PA_MATERIAL_DEAL.currency_code='CNY';
--批量更新--->使用临时表 (同mapper代码转化为PL/SQL代码)
updatePA_NOCALAPPLYORDER_ESTPRICE A
set(provider_code,provider_name,work_code,expected_date,estimate_price,estimate_time)
=
(selectB.provider_code,B.provider_name,B.work_code,
B.expected_date,B.estimate_price,
(case whenA.estimate_price = B.estimate_price then A.estimate_timeelseto_char(sysdate,'yyyy-MM-ddHH24:mi:ss') end)
from PA_TEMPNOCAL_ESTPRICE B
where trim(B.order_number)=trim(A.order_number)
and trim(B.order_type) = trim(A.order_type)
and trim(B.order_company)=trim(A.order_company)
and trim(B.order_line) = trim(A.order_line)
)
where exists
(select 1 from PA_TEMPNOCAL_ESTPRICE B
where trim(B.order_number)=trim(A.order_number)
and trim(B.order_type) = trim(A.order_type)
and trim(B.order_company)=trim(A.order_company)
and trim(B.order_line) = trim(A.order_line)
);
mapper文件:
//批量更新
//借助临时表
//Dao层接口中的code(java注解编写)
@Update("updatePA_NOCALAPPLYORDER_ESTPRICE A "
+"set(provider_code,provider_name,work_code,expected_date,estimate_price,update_estimate_time)"
+"="
+"(selectB.provider_code,B.provider_name,B.work_code, "
+"B.expected_date,B.estimate_price,to_char(sysdate,'yyyy-MM-ddHH24:mi:ss')"
+"from PA_TEMPNOCAL_ESTPRICE B "
+"wheretrim(B.order_number) = trim(A.order_number) "
+"andtrim(B.order_type) = trim(A.order_type) "
+"andtrim(B.order_company) = trim(A.order_company) "
+"andtrim(B.order_line) = trim(A.order_line) ) "
+"whereexists "
+"(select1 from PA_TEMPNOCAL_ESTPRICE B "
+"wheretrim(B.order_number) = trim(A.order_number) "
+"andtrim(B.order_type) = trim(A.order_type) "
+"andtrim(B.order_company) = trim(A.order_company) "
+"andtrim(B.order_line) = trim(A.order_line) ) ")
//不需要临时表
//Mapper文件中的code
<!-- 推到审核中 -->
<update id="auditCurrent"parameterType="java.util.List">
update f4301 set phpohc12 = '2' wheretrim(phpohc12) < '2' and (phdoco, phdcto, phkcoo) in
(
<foreach collection="list"item="item" index="index" separator="union">
select
#{item.order_number},
#{item.order_type},
#{item.order_company}
from dual
</foreach>
)
</update>
//mapper代码转化为PL/SQL代码
updatePA_NOCALAPPLYORDER_ESTPRICE A
set(provider_code,provider_name,work_code,expected_date,estimate_price,estimate_time)
=
(selectB.provider_code,B.provider_name,B.work_code,
B.expected_date,B.estimate_price,
(case whenA.estimate_price = B.estimate_price then A.estimate_timeelseto_char(sysdate,'yyyy-MM-ddHH24:mi:ss') end)
from PA_TEMPNOCAL_ESTPRICE B
where trim(B.order_number)=trim(A.order_number)
and trim(B.order_type) = trim(A.order_type)
and trim(B.order_company)=trim(A.order_company)
and trim(B.order_line) = trim(A.order_line)
)
where exists
(select 1 from PA_TEMPNOCAL_ESTPRICE B
where trim(B.order_number)=trim(A.order_number)
and trim(B.order_type) = trim(A.order_type)
and trim(B.order_company)=trim(A.order_company)
and trim(B.order_line) = trim(A.order_line)
);
查:Select
PL/SQL客户端:
//查询List
--in 子查询
select * fromPA_MATERIAL_DEAL
where (imlitm,provider_code,currency_code)
in(('M00238101010210101','201','CNY'),('SPCL' ,'11111' ,'CNY'));
mapper文件:
//查询List
//Mapper文件中的code
<selectid="getEstPriceInfo" parameterType="java.util.List"resultType="com.harmontronics.erp.vo.BackApplyOrderVO">
selectorder_line,provider_code,provider_name,expected_date,estimate_price
from PA_NOCALAPPLYORDER_ESTPRICE
where(order_line,order_number,order_type,order_company)
in
<foreachcollection="portalApplyOrderVOList"item="item"index="index" separator="union"open="("close=")">
(
select
#{item.order_line},
#{item.order_number},
#{item.order_type},
#{item.order_company}
from dual
)
</foreach>
</select>
//mapper代码转化为PL/SQL代码
--in 子查询
select count(1)
from PA_MATERIAL_DEAL
where (trim(imlitm),trim(provider_code),trim(currency_code))
in
(
(select 'SPCL','011011','CNY' fromdual) union (select 'L002','11121','EUR' from dual)
)
阅读更多
- 如何通过pl/sql将excel文件数据导入到oracle
- PL/SQL Developer 下执行oracle的脚本文件
- 如何使用PL/SQL导入CSV文件到Oracle
- Oracle PL.SQL解析 XMl文件
- .Oracle使用PL/SQL Developer工具导出DMP文件
- PL/SQL 设置登陆数据库的 配置文件 tnsnames.ora(oracle文件)
- Oracle PL/SQL java读写文件权限问题得到解决
- 在Oracle表数据和xml文件间相互导入导出的PL/SQL 过程
- Oracle 9.2.0.1下PL/SQL对文件的操作
- Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理
- Oracle(七)--> PL/SQL 流程及要点(描述清晰 and 多图)
- Oracle中使用 PL/SQL Developer插入批量数据
- PL/SQL将txt(csv)文件导入数据到oracle
- mybatis的mapper配置文件配置oracle的判断是否成年的sql简洁写法。
- 数据库oracle--PL/SQL的使用-禁止生成备份文件 .~sql
- oracle批量执行sql文件的方法
- Win7安装Oracle 以及pl/sql登录 新建用户 并导入dmp文件
- Declare Variables, Constants and Types in Oracle PL/SQL
- 在Oracle表数据和xml文件间相互导入导出的PL/SQL 过程
- 之前创建了一个表空间,然后今天不小心把表空间文件给删除了。然后用pl/sql连接数据库的时候,报ORA-01033错误。ora-01033:oracle initializationg or shut