zoukankan      html  css  js  c++  java
  • mysql+ibatis 批量插入

    述:相比oracle批量插入,mysql批量插入就简单的多了,mysql支持values后面跟多条数据,进行批量插入,并且主键可以自增,不像oracle会遇到序列问题。

    1、建表

    CREATE TABLE `test_batch` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      `account` varchar(20) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    2、批量插入sql

    mysql一句话搞定的事情。

    INSERT INTO test_batch(id, NAME, account) VALUES(NULL, 'frank', 'frank001'), (NULL, 'quanbs', 'quanbs001');

    3、ibatis + mysql

    ● 我用的ibatis2.0,sqlMap文件引入的标签如下:

    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >

    ● java代码:

        @Override
        public void insertBatch(List<TestBatch> testBatchList) {
            HashMap paramMap = new HashMap(); 
            paramMap.put("v", tradeDetailList);
            getSqlMapClientTemplate().insert(getSqlMapSpace() + ".insertBatch", paramMap);
        }

    ● sqlMap代码:

    <insert id="insertBatch" parameterClass="net.sf.json.JSONObject">
        <![CDATA[ 
            insert into test_batch (id, name, account) values  
        ]]>  
        <iterate property="v" conjunction=",">  
            <![CDATA[ 
                (null, #v[].name#, #v[].account#)
            ]]>  
        </iterate> 
    </insert>

    最终程序执行拼的sql格式就是下图这样的:

    亲测可用,460数据插入数据库时间2秒。

  • 相关阅读:
    8.11记---我来啦!
    关于博主
    CSP-S 2019 第二轮 游记 AFO
    读入优化
    CSP-S 2019 第一轮 游记
    2019国庆正睿成都集训
    成外集训小记
    收藏夹(持续更新)
    博客建成
    博客施工中,敬请期待
  • 原文地址:https://www.cnblogs.com/frank-quan/p/6044427.html
Copyright © 2011-2022 走看看