Mapper批量插入Oracle数据@InsertProvider注解
2019-04-01 20:19
211 查看
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;
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
您可能感兴趣的文章:
- 从Oracle数据库中读取数据自动生成INSERT语句的方法
- mysql数据库和oracle数据库之间互相导入备份
- PHP+Oracle本地开发环境搭建方法详解
- Myeclipse链接Oracle等数据库时lo exception: The Network Adapter could not establish the connection
- oracle如何解锁封锁的账号
- 为Plesk PHP7启用Oracle OCI8扩展方法总结
- MySQL实现类似Oracle序列的方案
- 如何利用Oracle命令解决函数运行错误
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)
- Oracle中的SUM用法讲解
相关文章推荐
- JAVA开发13--批量将数据insert插入oracle表
- C# 用sql insert into 语句向oracle插入数据数据一直未更新
- oracle 通过查询灵活插入数据 insert into ...select..
- oracle常用命令--插入/添加表数据之insert命令--插入日期
- Oracle:如何解决在执行insert语句后,插入的数据乱码
- 程序向oracle插入数据错误:can bind a LONG value only for insert into a LONG column
- Oracle实现数据不存在则插入,数据存在则更新(insert or update)
- Oracle实现数据不存在则插入,数据存在则更新(insert or update)
- oracle informix 插入insert多条数据 记录
- oracle insert 批量插入数据,跳过已存在记录
- java mybatis mapper批量插入数据,insert/update/映射属性字段
- oracle 通过查询灵活插入数据 insert into ...select..
- Oracle insert 插入数据 加 where 条件
- Oracle中向表中插入数据
- C#利用ODP.NET往oracle中高效插入百万数据
- Oracle无法插入含有日期的数据
- MyBatis 动态插入 数据 insert
- ORACLE数据库测试数据插入速度
- 向oracle插入CLOB型数据
- Oracle服务器插入中文数据出错的解决方法