项目中用MyBatis作为DAO层,用Oracle数据库进行存储。用户需要一个批量新增的功能,刚开始打算用Mybatis的批量新增,调试了好长时间,一直没调试出来,老报错,结果就先采用单条新增进行循环的方式来处理。 这几天有时间,正好又要优化上次的批量功能,就继续来弄一下Mybatis的批量新增功能。
几经折腾,按照网上说的方法都试了一遍,还是不行,最后发现原来是数据库的问题。MyBatis的批量新增针对Oracle的写法和MySql的不一样。网上大部分都是MySql的写法。
下面贴出针对Oracle进行批量新增的写法。
Service层:
/*
* 插入北方来话统计数据(根据集合进行插入)
*/
public ServiceResult<BatchDataImportBean> insertTollNorthBatch(Long rateCycle,List list) {
try {
batchDataImportDao.insertTollNorthBatch(rateCycle,list);
} catch (Exception e) {
userContext.setSuccess(false);
userContext.setMessage(e.getMessage());
}
return userContext;
}
Dao层:
/*
* 在后台批量插入(根据集合来进行插入)
*/
public int insertTollNorthBatch(@Param("rateCycle")Long rateCycle, @Param("list")List list);
MyBatis配置:
<insert id="insertTollNorthBatch" parameterType="map">
insert into d_toll_north_data_${rateCycle} (RATE_CYCLE_ORG, NF_PROV_ID, NF_AREA_CODE, BF_PROV_ID, BF_AREA_CODE, DURATIONS, FEES)
<foreach collection="list" item="item" index="index" separator="union all">
select #{item.rateCycleOrg ,jdbcType=NUMERIC},
#{item.nfProvId,jdbcType=NUMERIC},
#{item.nfAreaCode,jdbcType=NUMERIC},
#{item.bfProvId,jdbcType=NUMERIC},
#{item.bfAreaCode,jdbcType=NUMERIC},
#{item.durations,jdbcType=NUMERIC},
#{item.fees,jdbcType=NUMERIC} from dual
</foreach>
</insert>
具体可以参考:http://www.cnblogs.com/dyllove98/archive/2013/08/03/3235546.html
@yongtaixincun.baiyunqu.guangzhou 2014-09-25 23:47
分享到:
相关推荐
Mybatis批量foreach merge into的用法 Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不...
本文将深入探讨MyBatis中实现批量插入的两种高效方式。 ### 1. MyBatis `foreach` 标签 `foreach` 是MyBatis中用于在SQL语句中迭代集合的标签,特别适合构建`IN`条件。`foreach` 元素的属性包括: - `item`: 集合...
于是一怒之下,自己动手丰衣足食,于是就自己用Swing写了一个基于数据库的自动化生成工具,支持MySQL、Oracle、SQLServce、PostgreSQL四种数据库,支持Window、Linux、MacBook等多个作系统,完美支持JPA注解,可以...
【源码】oracle版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除 3. 会员管理:...
MBG支持多种数据库,包括MySQL、Oracle、SQL Server等,能够根据数据库表结构生成对应的实体类、Mapper接口和XML映射文件,简化了开发过程。 2. **安装与配置** 使用MBG首先需要将其添加到项目的依赖库中,可以...
2. `select result.*,seq.nextval id from (...) result`:这里使用了子查询,并且为每个用户分配了一个唯一的id(假设数据库支持序列,如Oracle)。 3. `<foreach>`标签处理`lineList`,对于每个用户(`item`),...
可选的去除掉对版本管理不友好的注释,这样新增或删除字段重新生成的文件比较过来清楚 目前已经支持Mysql、Mysql8、Oracle、PostgreSQL与SQL Server,暂不对其他非主流数据库提供支持。(MySQL支持的比较好,其他...
java快速插入千万级数据,亲测91秒插入1700万数据!!!
此外,教师可以不定时地对问题库进行管理,包括新增、删除、批量操作等,这些问题可能被分类存储,便于检索。 对于学生来说,他们同样可以查看和编辑个人资料,提出问题并查看教师的回复。在讨论区,学生可以与其他...
- 这是MyBatis Generator的主要配置文件,它包含了数据库连接信息、生成的代码类型等。你可以在此处定义生成的类(例如:Model、Mapper、DAO)以及它们的属性和行为。 3. **自定义模板** - 如果你想自定义生成的...