精华内容
下载资源
问答
  • ssi集成,在批量增加数据的时候一定要自己控制事务的开启,否则你批量增加就没有效果,但就是在批量增加结束,立即执行另外一条sql语句时就会报错!后来度娘无果,谷歌也不给力,发现自己在结束操作的时候没有结束事务导致...
    ssi集成,在批量增加数据的时候一定要自己控制事务的开启,否则你批量增加就没有效果,但就是在批量增加结束,立即执行另外一条sql语句时就会报错!后来度娘无果,谷歌也不给力,发现自己在结束操作的时候没有结束事务导致这个异常!
    int result=0;
    		sqlMapClient.startTransaction();
    		sqlMapClient.startBatch();
    		for(int i=0;i<reportDayItemsList.size();i++){
    			ReportDayItemsVO reportDayItems=reportDayItemsList.get(i);
    			sqlMapClient.insert("day.insertDayReportItem",reportDayItems);
    		}
    		result=sqlMapClient.executeBatch();
    		sqlMapClient.commitTransaction();
    		sqlMapClient.endTransaction();
    		return result;

    展开全文
  • oracle 批量增加数据sql

    2020-04-23 23:42:49
    <insert id="insertBatch" parameterType="java.util.List"> insert into A10WEB ( ABZ001, ABZ080, AAC102, ABB391, AAB001 ) select t.abz001,t.abz080,t.aac102,t.a...

    <insert id="insertBatch" parameterType="java.util.List">  
        insert into A10WEB (
            ABZ001, ABZ080, AAC102, ABB391, AAB001
            )
            select
            t.abz001,t.abz080,t.aac102,t.abb391,t.aab001
            from (
            <foreach collection="list" item="item" index="index"
                separator="union all">
                (select
                #{item.abz001} abz001,
                #{item.abz080} abz080,
                #{item.aac102} aac102,
                #{item.abb391} abb391,
                #{item.aab001} aab001
                from
                dual)
            </foreach>
            )t
    </insert>

    展开全文
  • 最近做项目遇到一个挺纠结的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰。先来看一下最终我是怎么实现的:INSERT INTO tg_fcst_lines(${lineColumn...

    最近做项目遇到一个挺纠结的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰。

    先来看一下最终我是怎么实现的:

    INSERT INTO tg_fcst_lines(${lineColumn})

    select result.*,sq_fcst_lines.nextval from(

    ]]>

    (select

    #{_value}

    from dual)

    由于数据表不确定,所以我无法确定我要insert的字段,由于是批量insert,确定value值也挺费劲。

    我传给mybatis的参数是一个map:

    Map insertMap = new HashMap();

    insertMap.put("lineColumn",lineColumn);

    insertMap.put("lineList", lineList);

    lineColumn是一个字符串,lineList是一个list:

    List lineList = new ArrayList();

    lineList里存放的是map,map的键对应数据表的字段,值是你要insert的值,这样就可以通过foreach取出list的值作为insert语句的value,但由于map是无序的,存放的顺序和

    遍历时取值的顺序不一定一致,所以为了确保insert字段和值可以一一对应,可以通过遍历一次map来取出key拼接一个字符串作为insert的字段

    String lineColumn = ""; //拼接的SQL,作为insert语句的一部分

    [java] view plaincopy

    Map lineMap = lineList.get(0);

    for (String key : lineMap.keySet()) {

    lineColumn +=key+",";

    }

    lineColumn +="LINE_ID";

    这里的line)id是一个自增的字段,在语句中直接写序列会报错,所以先遍历list将取出的值作为result,在取出result的所有值,连同序列一起作为insert的值。

    在取值的时候使用两个foreace嵌套来实现,外层的foreach遍历list,里层的foreach遍历map。

    以上内容是本文给大家介绍的oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert的全部叙述,希望大家喜欢。

    原文:http://www.jb51.net/article/74203.htm

    展开全文
  • 其中涉及的数据库的连接与关闭,Statement的关闭,ResultSet的关闭,请参考文章...宿舍室表sql: CREATE TABLE dorm(dormnum INT NOT NULL PRIMARY KEY,dormtext TEXT NOT

    其中涉及的数据库的连接与关闭,Statement的关闭,ResultSet的关闭,请参考文章http://blog.csdn.net/mrw456/article/details/49718235

    本例使用Mysql数据库,以宿舍室表为例

    宿舍室表sql:

    CREATE TABLE dorm(dormnum INT NOT NULL PRIMARY KEY,dormtext TEXT NOT NULL); 
    

    Dorm.java

    public class Dorm {
    	private int dormnum;
    	private String dormtext;
    	public Dorm() {
    		super();
    	}
    	public Dorm(int dormnum, String dormtext) {
    		super();
    		this.dormnum = dormnum;
     		this.dormtext = dormtext;
    	}
     	public int getDormnum() {
    		return dormnum;
     	}
      	public void setDormnum(int dormnum) {
     		this.dormnum = dormnum;
    	}
     	public String getDormtext() {
    		return dormtext;
    	 }
     	public void setDormtext(String dormtext) {
    		this.dormtext = dormtext;
    	}
    	
    }

    1、增加数据

    public boolean dormadd(Dorm dorm) {
    		Connection connection=MysqlOperation.getConnection();
    		String addSQL="insert into dorm(dormnum,"+
    		"dormtext) values(?,?)";
    		PreparedStatement pstmt=null;
    		try {
    			connection.setAutoCommit(false); //设置自动提交为false,如果出现异常进行回滚
    			pstmt=connection.prepareStatement(addSQL);
    			pstmt.setInt(1,dorm.getDormnum());
    			pstmt.setString(2,dorm.getDormtext());
    			pstmt.execute();
    			connection.commit();
    		} catch (Exception e) {
    			try {
    				connection.rollback();//事务进行回滚,回到最初的状态
    			} catch (SQLException e1) {
    				System.out.println("事务提交异常");
    			}
    			e.printStackTrace();
    			return false;
    		}finally{
    			MysqlOperation.close(pstmt);
    			MysqlOperation.close(connection);
    		}
    		return true;
    	}
    2、删除数据
    	public boolean dormdelete(String dormnum) {
    		Connection connection=MysqlOperation.getConnection();
    		String sql="delete from dorm where dormnum=?";
    		PreparedStatement pstmt=null;
    		try {
    			connection.setAutoCommit(false);
    			pstmt=connection.prepareStatement(sql);
    			pstmt.setString(1,dormnum);
    			pstmt.execute();
    			connection.commit();
    		} catch (Exception e) {
    			e.printStackTrace();
    			try {
    				connection.rollback();
    			} catch (SQLException e1) {
    				e1.printStackTrace();
    			}
    			return false;
    		}finally{
    			MysqlOperation.close(pstmt);
    			MysqlOperation.close(connection);
    		}
    		return true;
    	}
    3、修改数据

    	public boolean dormupdate(Dorm dori) {
    		Connection connection=MysqlOperation.getConnection();
    		String sql="update dorm set dormtext=? where dormnum=?";
    		PreparedStatement pstmt=null;
    		try {
    			connection.setAutoCommit(false);
    			pstmt=connection.prepareStatement(sql);
    			pstmt.setString(1,dori.getDormtext());
    			pstmt.setInt(2,dori.getDormnum());
    			pstmt.execute();
    			connection.commit();
    		} catch (Exception e) {
    			e.printStackTrace();
    			try {
    				connection.rollback();
    			} catch (SQLException e1) {
    				System.out.println("事务异常");
    			}
    			return false;
    		}finally{
    			MysqlOperation.close(pstmt);
    			MysqlOperation.close(connection);
    		}
    		return true;
    	}
    4、查询数据

    public List<Dorm> buildselect(String str) {
    		Connection connection=MysqlOperation.getConnection();
    		String findSQL="select * from dorm where dormnum=?";
    		PreparedStatement pstmt=null;
    		ResultSet rs=null;
    		List<Dorm> dorms=new ArrayList<Dorm>();
    		try {
    			pstmt=connection.prepareStatement(findSQL);
    			pstmt.setString(1,str);
    			rs=pstmt.executeQuery();
    			while(rs.next())
    			{
    				Dorm dorm=new Dorm();
    				dorm.setDormnum(rs.getInt(1));
    				dorm.setDormtext(rs.getString(2));
    				dorms.add(dorm);
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    			return null;
    		}finally
    		{
    			MysqlOperation.close(rs);
    			MysqlOperation.close(pstmt);
    			MysqlOperation.close(connection);
    		}
    		
    		return dorms;
    	}
    5、批量添加

    public boolean dormpadd(ArrayList<Dorm> dorms) {
    		Connection connection=MysqlOperation.getConnection();
    		String addSQL="insert into dorm(dormnum,"+
    		"dormtext) values(?,?)";
    		PreparedStatement pstmt=null;
    		try {
    			connection.setAutoCommit(false);
    			pstmt=connection.prepareStatement(addSQL);
    			for(Dorm dorm:dorms){
    				pstmt.setInt(1,dorm.getDormnum());
    				pstmt.setString(2,dorm.getDormtext());
    				pstmt.addBatch(); //添加预定义参数
    			}
    			pstmt.executeBatch();//批量执行预定义SQL
    			connection.commit();
    		} catch (Exception e) {
    			try {
    				connection.rollback();
    			} catch (SQLException e1) {
    				System.out.println("事务提交异常");
    			}
    			e.printStackTrace();
    			return false;
    		}finally{
    			MysqlOperation.close(pstmt);
    			MysqlOperation.close(connection);
    		}
    		return true;
    	}
    

    
    
    展开全文
  • JDBC工具类 package ... import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet;...import java.sql.ResultSetMetaData;...import java.sql.SQLExcept...
  • 批量增加数据脚本add_batch.sql [code="java"]create function add_account(INTEGER) returns TEXT as ' DECLARE num INTEGER := 1; input_num ALIAS FOR $1; number INTEGER := 0; BEGIN ...
  • 在线QQ客服:1922638专业的SQL Server、MySQL数据库同步软件背景在项目中开发一批新的和更新的需求。由于以前的数据是一个接一个地存储的,因此每天的存储量约为100,000。后来,当需求增加的日存储量增加到一百万时...
  • Mybatis动态SQL批量更新

    2020-09-18 09:30:37
    Mybatis动态SQL批量更新 需求: 现有一个数据同步的需求,是将两张存在一对多关系表的数据进行同步,多方保存有产品编号和产品类型名称,而一方则保留有产品编号和其他数据,现要将多方的产品名称拼接成一个字符串,...
  • 最近需要用到Mybatis批量新增oracle数据库,刚开始在网上找到的方法是都是更新mySQL的,试了一下发现不适合Oracle,后来发现正确的oracle批量新增的sql是: &lt;insert id="insertAttractionsBatch" ...
  • 最近需要用到Mybatis批量新增oracle数据库,刚开始在网上找到的方法是都是更新mySQL的,试了一下发现不适合Oracle,后来发现正确的oracle批量新增的sql是: &lt;insert id="insertAttractionsBatch" ...
  • Java之JDBC-批量操作

    千次阅读 2018-04-10 20:08:51
    1.增加插入1000条数据,查看各种方法所需要的时间:*普通方式:...import java.sql.*; /** * @Author: cxx * @Date: 2018/4/10 18:22 */ public class JdbcTest { public static void main(String[] args) { ...
  • 1.批量增加: &lt;insert id="addSelfTaskList" parameterType="java.util.List"&gt;  insert into selftaskpatroluser(taskid,taskassetid)  VALUES  &lt;...
  • 通过 mybatis 框架,实现 SQL 批量插入并返回每条数据的主键id。   2.山重水复 通过使用 MyBatis,在插入单条数据的时候有两种方式返回自增主键id: 对于支持生成自增主键的数据库:<insert> 标签属性...
  • 首先增加一些初始化数据,使用_bulk批量创建索引library,类型定义为book,包含的字段有name,author,release_date,page_count四个。这里还为index创建了_id命名。 curl -X PUT "localhost:9200/library/book/_...
  • 以下就是一个实例:package ... import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; ...import javax.sql.DataSource;...import java.sql.*; import ja...
  • Mybatis动态SQL

    2020-07-30 00:16:08
    choose(when otherwise) 相当于JAVA中的if else trim(where , set ) 辅助元素 用来处理sql拼接问题 foreach 循环语句 批量操作 bind 创建一个变量 并绑定到上下中 用于兼容不用的数据库,防止SQL注入等 choose 举例 ...
  • mybatis批量添加踩坑

    2021-01-19 19:14:08
    // 批量增加房源图片(效率高,但是参数不灵活) int batchInsertSelective(List<HousePic> list); <insert id="batchInsertSelective" parameterType="java.util.List"> INSERT INTO house_pic ...
  • [MyBatis]动态sql

    2018-07-18 22:55:03
    目录 ...批量增加 内置参数 bind标签 sql标签 所有测试用例 所有接口 package com.yiki.Dao; import com.yiki.Entity.Person; import org.apache.ibatis.annotations.Param; import java...
  • Java面试题--5

    2019-05-29 20:08:28
    PreparedStatement接口代表预编译的语句,它主要的优势在于可以减少SQL的编译错误并增加SQL的安全性(减少SQL注入攻击的可能性) PreparedStatement中的SQL语句是可以带参数的,避免了用字符串连接拼接SQL语句的麻烦...
  • mybatis之批量添加

    千次阅读 2018-10-12 19:06:27
    2)增加映射接口批量添加方法: 3)sql.xml增加insertBatch片段 &lt;insert id="insertBatch" parameterType="java.util.List" &gt; insert into tb_specification_option (id, ...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP...
  • Java资源包01

    2016-08-31 09:16:25
    Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP...
  • SOFABoot :SOFABoot 基于 Spring Boot ,不过在其基础上增加了 Readiness Check,类隔离,日志空间隔离等等能力。 配套提供的还有:SOFARPC(RPC框架)、SOFABolt(基于Netty的远程通信框架)、SOFARegistry(注册...
  • java开源包101

    2016-07-13 10:11:08
    Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP...

空空如也

空空如也

1 2 3 4 5
收藏数 81
精华内容 32
关键字:

java批量增加sql

java 订阅