Mapper批量插入Oracle数据@InsertProvider注解

作者:qq_41875147 时间:2023-02-11 15:13:40 

Mapper:

@Mapper

@OracleRepository


public interface OracleRadiusMapper{
@InsertProvider(type = OracleRadiusProvider.class , method = "insertRadiusDataBatch")
int insertRadiusDataBatch(@Param("list")List<AcctInfo> acctInfoList);

//@Param("list") 可以省略,在处理list的时候默认是list

Provider:


public class OracleRadiusProvider {
public String insertRadiusDataBatch(Map map) {
List<RadiusAcctInfo> radiusAcctInfoList = (List<RadiusAcctInfo>) map.get("list");
StringBuilder sb = new StringBuilder();
sb.append(" INSERT ALL ");
String inVal=" INTO RADIUS_ACCT (RADACCT_ID,ACCT_SESSIONID,ACCT_UNIQUEID,USER_NAME,GROUP_NAME,REALM,NAS_IP_ADDRESS,NAS_PORT_ID,NAS_PORT_TYPE,ACCT_START_TIME,ACCT_UPDATE_TIME,ACCT_STOP_TIME,ACCT_INTERVAL,"
+ "ACCT_SESSION_TIME,ACCT_AUTHENTIC,CONNECTINFO_START,CONNECTINFO_STOP,ACCT_INPUTOCTETS,ACCT_OUTPUTOCTETS,CALLED_STATION_ID,CALLING_STATION_ID,ACCT_TERMINATE_CAUSE,SERVICE_TYPE,"
+ "FRAMED_PROTOCOL,FRAMED_IP_ADDRESS) VALUES";
sb.append(inVal);
MessageFormat mf = new MessageFormat("("
+ "#'{'list[{0}].radacctId,jdbcType=NUMERIC}, #'{'list[{0}].acctSessionid,jdbcType=VARCHAR}, #'{'list[{0}].acctUniqueid,jdbcType=VARCHAR}, #'{'list[{0}].userName,jdbcType=VARCHAR}"
+ ", #'{'list[{0}].groupName,jdbcType=VARCHAR}, #'{'list[{0}].realm,jdbcType=VARCHAR}, #'{'list[{0}].nasIpAddress,jdbcType=VARCHAR}, #'{'list[{0}].nasPortId,jdbcType=VARCHAR}, #'{'list[{0}].nasPortType,jdbcType=VARCHAR}"
+ ", #'{'list[{0}].acctStartTime,jdbcType=DATE}, #'{'list[{0}].acctUpdateTime,jdbcType=DATE}, #'{'list[{0}].acctStopTime,jdbcType=DATE}, #'{'list[{0}].acctInterval,jdbcType=NUMERIC}, #'{'list[{0}].acctSessionTime,jdbcType=NUMERIC}"
+ ", #'{'list[{0}].acctAuthentic,jdbcType=VARCHAR}, #'{'list[{0}].connectinfoStart,jdbcType=VARCHAR}, #'{'list[{0}].connectinfoStop,jdbcType=VARCHAR}, #'{'list[{0}].acctInputoctets,jdbcType=NUMERIC}, #'{'list[{0}].acctOutputoctets,jdbcType=NUMERIC}"
+ ", #'{'list[{0}].calledStationId,jdbcType=VARCHAR}, #'{'list[{0}].callingStationId,jdbcType=VARCHAR}, #'{'list[{0}].acctTerminateCause,jdbcType=VARCHAR}, #'{'list[{0}].setviceType,jdbcType=VARCHAR}, #'{'list[{0}].framedProtocol,jdbcType=VARCHAR}"
+ ", #'{'list[{0}].framedIpAddress,jdbcType=VARCHAR} )");
for (int i = 0; i < radiusAcctInfoList.size(); i++) {
sb.append(mf.format(new Object[] { i+"" }));
if (i < radiusAcctInfoList.size() - 1) {
sb.append(inVal);
}
}
sb.append(" select 1 from dual");//记得加这句
return sb.toString();
}
}

可以在数据库直接咨询这语句


insert all
into jack_20170206_aa values('4014033')
into jack_20170206_aa values('4065304')
into jack_20170206_aa values('4088136')
into jack_20170206_aa values('4092405')
select 1 from dual;

来源:https://blog.csdn.net/qq_41875147/article/details/80762304

标签:mapper,oracle数据,批量插入
0
投稿

猜你喜欢

  • Java异常处理机制try catch流程详解

    2022-09-23 08:51:09
  • sin(x)如何求解的java代码实现方法

    2022-04-17 16:22:07
  • JDK1.8中的ConcurrentHashMap源码分析

    2023-11-27 06:02:32
  • JAVA中实现原生的 socket 通信机制原理

    2021-08-08 03:06:01
  • Java发送报文与接收报文的实例代码

    2023-07-09 04:44:01
  • Java虚拟机之类加载

    2022-11-15 05:19:19
  • Java logback日志的简单使用

    2023-07-15 01:32:33
  • SpringBoot访问外部文件及默认路由问题

    2021-08-12 10:58:01
  • java POI解析Excel 之数据转换公用方法(推荐)

    2023-06-10 11:04:53
  • SpringBoot预加载与懒加载实现方法超详细讲解

    2021-08-31 11:39:13
  • 详细了解JAVA NIO之Buffer(缓冲区)

    2022-08-18 00:59:28
  • Java线程之守护线程(Daemon)用法实例

    2023-11-29 09:15:13
  • Spring五大类注解读取存储Bean对象的方法

    2023-11-09 22:07:07
  • SpringBoot整合Shiro实现登录认证的方法

    2022-03-23 01:12:19
  • java中sdk与jdk的区别详细解析

    2023-11-25 03:37:14
  • Java 入门图形用户界面设计之复选框

    2022-06-19 15:22:53
  • Java面向对象编程的三大特征

    2023-09-19 06:20:34
  • 解析springboot整合谷歌开源缓存框架Guava Cache原理

    2023-11-07 13:24:23
  • java实现小球碰撞功能

    2023-04-05 19:22:41
  • Java多线程之同步锁-lock详解

    2023-12-16 14:40:08
  • asp之家 软件编程 m.aspxhome.com