西西软件下载最安全的下载网站、值得信赖的软件下载站!

首页编程开发其它知识 → 需要插入多条数据时ibatis批处理可以提高性能

需要插入多条数据时ibatis批处理可以提高性能

相关软件相关文章发表评论 来源:西西整理时间:2013/3/1 10:47:12字体大小:A-A+

作者:Gu Chao点击:0次评论:0次标签: ibatis

  • 类型:数据库类大小:14KB语言:中文 评分:5.0
  • 标签:
立即下载

ibatis循环处理与批处理--以插入操作为例

1.循环处理

循环操作的ibatis配置

<!-- 插入一条记录 -->
  <insert id="insertUser" parameterClass="User">
      <![CDATA[
          insert into user(
              id,
              userName,
              passWord
          )values(
              #id#,
              #userName#,
              #passWord#
          )
      ]]>
  </insert>

循环操作的Junit测试

/**
     * 循环插入一条用户记录
     * @throws Exception
     */
    public void inserttest() throws Exception{
        Long oldTime = System.currentTimeMillis();
        //System.out.println(oldTime);
        for(int i= 0; i < 10000 ; i++){
            User user = new User();
            user.setId(String.valueOf(i));
            user.setUserName("用户"+ i);
            user.setPassWord("user"+ i);
            new UserDaoImpl().insert(user);
            System.out.println(i);
        }
        System.out.println("循环插入多条记录所花费的时间:"+ (System.currentTimeMillis()-oldTime)/1000.00 +"s");
    }

2.批处理

批处理的ibatis配置

<!-- 插入多条记录 -->
  <insert id="insertUserList" parameterClass="java.util.List">
      <![CDATA[
          insert into user(
              id,
              userName,
              passWord
          ) values
      ]]>
      <iterate conjunction=",">
      <![CDATA[
          (
              #list[].id#,
              #list[].userName#,
              #list[].passWord#
          )
      ]]>
      </iterate>
  </insert>

批处理Junit测试

/**
     * 插入多条记录 --快
     * @throws Exception
     */
    public void insertListTest() throws Exception{
        Long oldTime = System.currentTimeMillis();
        //System.out.println(oldTime);
        List<User> users = new ArrayList<User>();
        for(int i=0; i< 10000; i++){
            User user = new User();
            user.setId(String.valueOf(i));
            user.setUserName("用户"+ i);
            user.setPassWord("user"+ i);
            users.add(user);
            System.out.println(i);
        }
        new UserDaoImpl().insertList(users);
        System.out.println("一次插入多条记录所花费的时间:"+ (System.currentTimeMillis()-oldTime)/1000.00 +"s");
    }

从上面的例子能够测试出批处理的性能高于循环处理的性能。在实际的项目中,对于一次需要插入多条数据,应该使用批处理。

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)
    推荐文章

    没有数据