在介绍批量写入数据时,我先介绍本次项目使用的数据库,这是基于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 ,d