一次执行批量sql的方法
SimpleJdbcTemplateDaoImpl .class
- /**
- * Copyright (C) DADICOM, Inc.
- */
- package com.dadi.oa.dao.impl;
- import java.sql.CallableStatement;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.springframework.dao.DataAccessException;
- import org.springframework.jdbc.core.BatchPreparedStatementSetter;
- import org.springframework.jdbc.core.CallableStatementCallback;
- import org.springframework.jdbc.core.CallableStatementCreator;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.core.PreparedStatementCreator;
- import org.springframework.jdbc.core.support.JdbcDaoSupport;
- import org.springframework.jdbc.support.GeneratedKeyHolder;
- import org.springframework.jdbc.support.KeyHolder;
- import com.dadi.oa.dao.SimpleJdbcTemplateDao;
- /**
- * @author shensheng
- *
- * Mar 15, 2009 7:00:16 PM
- */
- public class SimpleJdbcTemplateDaoImpl extends JdbcDaoSupport implements SimpleJdbcTemplateDao {
- /* (non-Javadoc)
- * @see com.dadi.chr.dao.SimpleJdbcTemplateDao#queryForList(java.lang.String)
- */
- public List<Map<String, Object>> queryForList(String sql) throws Exception {
- return this.getJdbcTemplate().queryForList(sql);
- }
- public List<Map<String, Object>> queryForList(String sql,Object...params){
- return this.getJdbcTemplate().queryForList(sql, params);
- }
- /* (non-Javadoc)
- * @see com.dadi.chr.dao.SimpleJdbcTemplateDao#update(java.lang.String)
- */
- public Integer update(String sql) throws Exception {
- return this.getJdbcTemplate().update(sql);
- }
- /* (non-Javadoc)
- * @see com.dadi.chr.dao.SimpleJdbcTemplateDao#update(java.lang.String,Object[])
- */
- public Integer update(String sql, Object... params) {
- if(params.length == 0)return getJdbcTemplate().update(sql);
- return getJdbcTemplate().update(sql,params);
- }
- public Long getCountBySql(String sql, Object...params) {
- return getJdbcTemplate().queryForLong(sql,params);
- }
- public void batchSaveOrUpdate(String sql,final List<Object[]> params) {
- getJdbcTemplate().batchUpdate(sql, new BatchPreparedStatementSetter() {
- public void setValues(PreparedStatement pstat, int i) throws SQLException {
- Object[] ps = params.get(i);
- for(int p = 0 ; p < ps.length ; p++){
- pstat.setObject(p + 1, ps[p]);
- }
- }
- public int getBatchSize() {
- return params.size();
- }
- });
- }
- @SuppressWarnings("unchecked")
- public Map<String,Object> executeStoreProc(final String sql,final Object[] paramValues,final int[] outParamTypes){
- Map<String,Object> retMap = (Map<String,Object>)this.getJdbcTemplate().execute(new CallableStatementCreator() {
- public CallableStatement createCallableStatement(final Connection arg0) throws SQLException {
- final CallableStatement cs = arg0.prepareCall(sql);
- return cs;
- }
- }, new CallableStatementCallback() {
- public Object doInCallableStatement(final CallableStatement cs) throws SQLException, DataAccessException {
- Map<String,Object> resultMap = new HashMap<String,Object>();
- final List<List<Map<String,Object>>> allRsLst = new ArrayList<List<Map<String,Object>>>();
- if(paramValues != null){
- for(int i = 0 ; i < paramValues.length ; i++){
- cs.setObject(i + 1, paramValues[i]);
- }
- }
- if(outParamTypes != null){
- for(int i = 0 ; i < outParamTypes.length ;i++){
- cs.registerOutParameter(paramValues.length + i + 1, outParamTypes[i]);
- }
- }
- cs.execute();
- ResultSet rs = cs.getResultSet();
- while (rs == null && cs.getMoreResults()) {
- rs = cs.getResultSet();
- }
- if(rs == null){
- rs = cs.executeQuery();
- }
- while (true) {
- if (rs != null) {
- List<Map<String,Object>> rsLst = new ArrayList<Map<String,Object>>();
- ResultSetMetaData rsmd = rs.getMetaData();
- int count = rsmd.getColumnCount();
- while (rs.next()) {
- Map map = new HashMap();
- for (int i = 1; i <= count; i++) {
- final String key = rsmd.getColumnLabel(i);
- final Object value = rs.getObject(key);
- map.put(key, value);
- }
- rsLst.add(map);
- }
- allRsLst.add(rsLst);
- }
- if (cs.getMoreResults()) {
- rs.close();
- rs = cs.getResultSet();
- } else {
- if(rs != null){
- rs.close();
- }
- break;
- }
- }
- resultMap.put("rs", allRsLst);
- if(outParamTypes != null){
- Map<Integer,Object> map = new HashMap<Integer,Object>();
- for(int i = 0 ; i < outParamTypes.length ;i++){
- Integer key = paramValues.length + i + 1;
- map.put(key,cs.getObject(key));
- }
- resultMap.put("out", map);
- }
- return resultMap;
- }
- });
- return retMap;
- }
- @Override
- public Integer updateGetKey(final String sql) throws Exception {
- KeyHolder keyHolder = new GeneratedKeyHolder();
- getJdbcTemplate().update(new PreparedStatementCreator() {
- @Override
- public PreparedStatement createPreparedStatement(Connection arg0)
- throws SQLException {
- PreparedStatement ps = arg0.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
- return ps;
- }
- }, keyHolder);
- return keyHolder.getKey().intValue();
- }
- @Override
- public void batchSaveOrUpdate(String[] sqls) {
- getJdbcTemplate().batchUpdate(sqls);
- }
- }
- package com.dadi.oa.service.impl;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import com.dadi.oa.dao.SimpleHibernateTempleDao;
- import com.dadi.oa.dao.SimpleJdbcTemplateDao;
- import com.dadi.oa.service.ReadExeclDataService;
- import com.dadi.oa.system.ConstantsUtil;
- import com.dadi.oa.util.ExeclReader;
- import com.sun.star.uno.RuntimeException;
- public class ReadExeclDataServiceImpl implements ReadExeclDataService{
- private Log logger = LogFactory.getLog(this.getClass());
- private SimpleJdbcTemplateDao jdbcDao;
- private SimpleHibernateTempleDao hbnDao;
- public void setJdbcDao(SimpleJdbcTemplateDao jdbcDao) {
- this.jdbcDao = jdbcDao;
- }
- public void setHbnDao(SimpleHibernateTempleDao hbnDao) {
- this.hbnDao = hbnDao;
- }
- @Override
- public void saveGatherDataMsg(ExeclReader reader,
- HashMap<String, String> inputMap) {
- //HashMap retMap = new HashMap();
- try {
- String title = inputMap.get("title");
- String userid = inputMap.get("userid");
- Integer dataMsgId = jdbcDao.
- updateGetKey("INSERT INTO dbo.t_dataPublish " +
- " ( creatorId , "+
- " createDate , "+
- " title , "+
- " remark , "+
- " publishstatus , "+
- " deleteflag "+
- " ) "+
- "VALUES ( "+userid+" , "+
- " GETDATE() , " +
- " '"+title+"' , "+
- " '' , "+
- " 0 , "+
- " 0 "+
- " )");
- List headerData = reader.getHeaderData();
- inputMap.put("dataMsgId", String.valueOf(dataMsgId));
- Integer[] datacolumnids = new Integer[headerData.size()];
- for (int i = 0 ; i < headerData.size() ; i++) {
- HashMap<String, String> cellMap = (HashMap<String, String>) headerData.get(i);
- Integer datacolumnid = jdbcDao
- .updateGetKey("INSERT dbo.t_dataPublishColumn "+
- " ( t_dataPublish_id , "+
- " columnName , " +
- " columnType "+
- " ) " +
- "VALUES (" +
- " "+dataMsgId+", "+
- " '"+cellMap.get("val")+"' , "+
- " "+ConstantsUtil.gatherDataColumnStatus.get("COMMON_COLUMN")+
- " )");
- cellMap.put("datacolumnid", String.valueOf(datacolumnid));
- datacolumnids[i] = datacolumnid;
- }
- ArrayList<String> datadetailsqls = new ArrayList<String>();
- for (int i = 1; i < reader.getDataMap().size(); i++) {
- ArrayList rowData = (ArrayList) reader.getDataMap().get(i);
- for (int j = 0; j < rowData.size(); j++) {
- HashMap<String, String> cellMap = (HashMap<String, String>) rowData.get(j);
- datadetailsqls.add("INSERT INTO dbo.t_dataPublishDetail "+
- " ( t_dataPublishColumn_id , "+
- " rownum , "+
- " cellValue "+
- " ) "+
- " VALUES ( "+datacolumnids[j]+" , "+
- " "+cellMap.get("rowNum")+" , "+
- " '"+cellMap.get("val")+"' "+
- " )");
- }
- }
- String[] batchsqls = new String[datadetailsqls.size()];
- jdbcDao.batchSaveOrUpdate(datadetailsqls.toArray(batchsqls));
- } catch (Exception e) {
- e.printStackTrace();
- logger.error("===========ERROR:ReadExeclDataServiceImpl.saveGatherDataMsg()");
- throw new RuntimeException("服务器异常!!!");
- }
- //retMap.put("resultStr", resultStr);
- }
- }
一次执行批量sql的方法的更多相关文章
- 执行大SQL脚本方法
当我们需要在SQLServer数据库里面执行一个大的文件时,会发现数据库根本无法打开该脚本文件,原因是因为查询分析器只能执行100M以内的文件,所以脚本过大就会造成内存溢出.此时我们可以使用osql工 ...
- 在C#中执行带有GO的批量sql语句
引用 思海网络 在用C#中调用ADO执行批量SQL语句的时候,会出现无法识别GO语句的错误.这个时候,我们以GO语句为分割点,把整个批量语句分割成N块独立的SQL语句代码块(不包含GO语句),然后再 ...
- Django的F查询和Q查询,事务,ORM执行原生SQL
F查询和Q查询,事务及其他 F查询和Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个我们自己设定的常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django ...
- 在Oracle中执行动态SQL的几种方法
转载:在Oracle中执行动态SQL的几种方法 以下为内容留存: 在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如:SELECT t.empno,t.en ...
- 九、dbms_ddl(提供了在PL/SQL块中执行DDL语句的方法)
1.概述 作用:提供了在PL/SQL块中执行DDL语句的方法,并且也提供了一些DDL的特殊管理方法. 2.包的组成 1).alter_compile说明:用于重新编译过程.函数和包语法:dbms_dd ...
- thinkPHP框架中执行原生SQL语句的方法
这篇文章主要介绍了thinkPHP框架中执行原生SQL语句的方法,结合实例形式分析了thinkPHP中执行原生SQL语句的相关操作技巧,并简单分析了query与execute方法的使用区别,需要的朋友 ...
- 【转】MySQL批量SQL插入各种性能优化
原文:http://mp.weixin.qq.com/s?__biz=MzA5MzY4NTQwMA==&mid=403182899&idx=1&sn=74edf28b0bd29 ...
- mybatis执行批量更新update
Mybatis的批量插入这里有http://ljhzzyx.blog.163.com/blog/static/38380312201353536375/.目前想批量更新,如果update的值是相同的话 ...
- 如何 ︰ 执行批量更新和插入使用.NET 提供程序在 C#.NET OpenXML
https://support.microsoft.com/zh-cn/kb/315968 如何 ︰ 执行批量更新和插入使用.NET 提供程序在 C#.NET OpenXML Email Prin ...
随机推荐
- 使用java爬取国家统计局的12位行政区划代码
前言: 本文基于j2ee的原始url进行都写,解析指定内容时也是使用很傻的形式去查找指定格式的字符串来实现的. 更优雅的方式是可以使用apache的HttpClient和某些文档模型将HTML字符串构 ...
- 【重要】新浪微博api研究
# -*- coding: utf-8 -*- #python 27 #xiaodeng #新浪微博api研究 ''' 3.SDK的使用规则: 1)使用微博API,需要通过用户的授权,获取用户的授权码 ...
- 30、Java中Set集合之HashSet、TreeSet和EnumSet
Set集合是Collection的子集,Set集合与Collection基本相同,没有提供任何额外的方法,只是Set不允许包含重复的元素. Set集合3个实现类:HashSet.TreeSet.Enu ...
- vs2017预览版下载
vs2017预览版,没有限制的不过不能生成生产版本,集成最新的功能! 下载地址: https://www.visualstudio.com/zh-hans/vs/preview/
- 微信小程序Tab选项卡切换大集合
代码地址如下:http://www.demodashi.com/demo/14028.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- WeUI 是由微信官方设计团队专为微信移动 Web 应用设计的 UI 库
WeUI 是由微信官方设计团队专为微信移动 Web 应用设计的 UI 库. WeUI 是一套同微信原生视觉体验一致的基础样式库,为微信 Web 开发量身设计,可以令用户的使用感知更加统一.包含butt ...
- Linux终端监控工具之dstat
1.安装 yum install dstat 2.示例 1)直接跟数字,表示#秒收集一次数据,默认为一秒:dstat 5表示5秒更新一次 这是默认输出显示的信息: CPU状态:CPU的使用率.这项报告 ...
- write()和prinln()的区别?
输出数字不同: write()输出数字转换为字符,println原样输出. 输出null不同: write()输出引用类型的时候调用的toString转换为String数据,因此如果对象为null那么 ...
- HDU----专题训练
Problem A Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) Total Sub ...
- RHEL6.4 NFS文件共享服务器搭建
服务端:192.168.56.16客户端:192.168.56.17 服务端安装配置1.安装软件包 # yum install rpcbind nfs-utils 2.配置开机自启动 # chkcon ...