mybatis中批量写入(insert)数据
2016-09-22 13:47
253 查看
在介绍批量写入数据时,我先介绍本次项目使用的数据库,这是基于oracle数据库写的,框架用的是ssm(struct2,spring,mybatis)。学起来比较方便、简单,前面编写的业务逻辑只是简单的方法调用。为了批量处理数据,提高软件的运行速度,主要的数据处理还是在mapper层写的。
首先,介绍批量写入数据吧,当我们需要从一个表中提取需要的数据,写到例外一张表中时,例如:根据所给条件将A表的数据,写到B表中,且按照A表中的c属性降序排列。其中id号是自动生成sys_guid ,时间是根据数据库当前所在的服务器的系统时间生成 sysdate,系统是24小时制。
insert into B(id , name , sex ,date , num , c ,sum , ....)
select sys_guid , name , sex , (sysdate ,'YYYY-MM-DD HH24:mi:ss') , num , c ,sum.... from A
where A.c=#{c,jdbcType=VARCHAR}
order by c desc
这是简单的批量写入数据库的语句我们在这个基础上继续增加条件,就是A表的数据可能存在重复,且需要根据name,sex,c计算A表中各个数据的和。
在写之前,我还是先介绍下group by 的语法吧。
group by 语句是可以和合计函数一起使用,且group by 在组合需要的数据时,凡是select出的列,没有进行其他的操作的时候,都必须加到group by中。列子下面可以看出
那么我们可以这么写
insert into B(id , name , sex ,date , num , c ,sum , ....)
select sys_guid , name , sex , (sysdate ,'YYYY-MM-DD HH24:mi:ss') , count(id), c ,sum(sum).... from A
where c=#{c,jdbcType=VARCHAR} order by c desc
group by name ,sex,c
如果我们想把几个表的数据并到一起,在批量写到B表中时可以这么写
insert into B(id , name , sex ,date , num , c ,sum , ....)
select sys_guid , A .name , D.sex , (sysdate ,'YYYY-MM-DD HH24:mi:ss') , count(D.id), C.c ,sum(A.sum).... from A
left join C on C.c =A.c
left join D on D.sex = A.sex
where C.c=#{c,jdbcType=VARCHAR} order by C.c desc
group by A.name ,D.sex,C.c
好了,就介绍这些吧。都是比较简单的写法
首先,介绍批量写入数据吧,当我们需要从一个表中提取需要的数据,写到例外一张表中时,例如:根据所给条件将A表的数据,写到B表中,且按照A表中的c属性降序排列。其中id号是自动生成sys_guid ,时间是根据数据库当前所在的服务器的系统时间生成 sysdate,系统是24小时制。
insert into B(id , name , sex ,date , num , c ,sum , ....)
select sys_guid , name , sex , (sysdate ,'YYYY-MM-DD HH24:mi:ss') , num , c ,sum.... from A
where A.c=#{c,jdbcType=VARCHAR}
order by c desc
这是简单的批量写入数据库的语句我们在这个基础上继续增加条件,就是A表的数据可能存在重复,且需要根据name,sex,c计算A表中各个数据的和。
在写之前,我还是先介绍下group by 的语法吧。
group by 语句是可以和合计函数一起使用,且group by 在组合需要的数据时,凡是select出的列,没有进行其他的操作的时候,都必须加到group by中。列子下面可以看出
那么我们可以这么写
insert into B(id , name , sex ,date , num , c ,sum , ....)
select sys_guid , name , sex , (sysdate ,'YYYY-MM-DD HH24:mi:ss') , count(id), c ,sum(sum).... from A
where c=#{c,jdbcType=VARCHAR} order by c desc
group by name ,sex,c
如果我们想把几个表的数据并到一起,在批量写到B表中时可以这么写
insert into B(id , name , sex ,date , num , c ,sum , ....)
select sys_guid , A .name , D.sex , (sysdate ,'YYYY-MM-DD HH24:mi:ss') , count(D.id), C.c ,sum(A.sum).... from A
left join C on C.c =A.c
left join D on D.sex = A.sex
where C.c=#{c,jdbcType=VARCHAR} order by C.c desc
group by A.name ,D.sex,C.c
好了,就介绍这些吧。都是比较简单的写法
相关文章推荐
- Mybatis 大数据量的批量insert解决方案
- mybatis 批量写入数据
- mybatis 利用foreach insert 批量插入数据
- Mybatis 大数据量的批量insert解决方案
- Mybatis 大数据量的批量insert解决方案
- mybatis在使用insert into 批量插入数据的问题
- 【已解决】spring+mybatis+mysql能够select但无法insert,不报错,就是无数据写入
- Mybatis 大数据量的批量insert解决方案
- 详解MyBatis直接执行SQL查询及数据批量插入
- 使用mybatis在oracle进行批量插入的insert语句
- MyBatis直接执行SQL查询及批量插入数据
- Hbase之批量数据写入
- Mybatis使用insert插入数据
- mybatis-oracle批量插入数据的简单学习
- MyBatis:Insert操作详解(返回主键、批量插入)
- mybatis实现数据的批量删除
- DataTable数据批量写入数据库三种方法比较 以及方法介绍
- mybatis insert操作 返回插入的那条数据的id
- 数据批量写入
- Mybatis3.3.x技术内幕(十五):Mybatis之foreach批量insert,返回主键id列表(修复Mybatis返回null的bug)