方法1:

使用for循环在java代码中insert (不推荐)

方法2:

使用 在Mapper.xml当中使用 foreach循环的方式进行insert

PersonDao.java文件

public interface PersonDao {
        
        //这个是使用 foreach方式的mybatis 批量操作
        public void batchInsert(@Param("list")List<Person>list);
     
    }

PersonDao.xml

 <insert id="batchInsert" >
insert into person (
id,
person_name,
birthday,
address,
age,
gender
)
values
<foreach collection="list" item="list" index="index" separator="," >
(
#{list.id},
#{list.person_name},
#{list.birthday},
#{list.address},
#{list.age},
#{list.gender}
)
</foreach>
</insert>

主测试函数:

 public static void main5(String[] args) throws Exception {
SqlSession session = getSqlSession(); PersonDao pd = session.getMapper( PersonDao.class ); List<Person>pl = new ArrayList<Person>();
Person p1 = new Person(); p1.setPerson_name("哈哈哈吧"); p1.setAddress("深圳"); p1.setBirthday(new Date());
Person p2 = new Person(); p2.setPerson_name("您好"); p2.setAddress("上海"); p2.setBirthday(new Date());
Person p3 = new Person(); p3.setPerson_name("我是张伟"); p3.setAddress("广州"); p3.setBirthday(new Date());
pl.add(p1);
pl.add(p2);
pl.add(p3); pd.batchInsert(pl); System.out.println("完成batchInsert"); session.commit(); session.close();
//pd.batchInsert( pl );
}

方法3:
Mybatis内置的 ExecutorType有三种,默认是Simple,该模式下它为每个语句的执行创建一个新的预处理语句,

单条提交sql,而batch模式 重复使用已经预处理的语句,并且批量执行所有更新语句,显然 batch的性能更优,

中间在提交的过程中还可以设置等待时间,避免数据库压力过大。(获取batch模式下的session)

 public static void main(String[] args) throws Exception {

            InputStream in = new FileInputStream( "F:\\myeclipse_workspace\\mybatisGeneratortest\\src\\test\\resources\\mybatis-config.xml");
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = ssfb.build(in); SqlSession session = factory.openSession( ExecutorType.BATCH,false ); PersonDao pd = session.getMapper( PersonDao.class ); int size = 100000; try { for(int i=0;i<size;i++){
Person p = new Person();
p.setPerson_name("小明"); p.setBirthday(new Date());
pd.insertPeron(p);
if( i % 100 == 0 || i == size - 1 ){ //加上这样一段代码有好处,比如有100000条记录,每超过 100 条提交一次,中间等待10ms,可以避免一次性提交过多数据库压力过大
session.commit();
session.clearCache();
Thread.sleep(10);
}
} } catch (Exception e) {
// TODO: handle exception
}
}

Mybatis的三种批量操作数据的方法的更多相关文章

  1. mybatis的三种批量插入以及次效率比较

    1.表结构 CREATE TABLE `t_user` ( `id` varchar(32) CHARACTER SET utf8 NOT NULL COMMENT '主键', `name` varc ...

  2. sqlserver 下三种批量插入数据的方法

    本文将介绍三种批量插入数据的方法,需要的朋友可以参考下 本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源 ...

  3. MySql中4种批量更新的方法update table2,table1,批量更新用insert into ...on duplicate key update, 慎用replace into.

    mysql 批量更新记录 MySql中4种批量更新的方法最近在完成MySql项目集成的情况下,需要增加批量更新的功能,根据网上的资料整理了一下,很好用,都测试过,可以直接使用. mysql 批量更新共 ...

  4. iOS 三种收起键盘的方法

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  5. 【读书笔记】iOS-开发技巧-三种收起键盘的方法

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  6. File类三种得到路径的方法

    转: File类三种得到路径的方法 2010年11月29日 20:37:00 ssyan 阅读数:27123 标签: filemicrosoftstringexceptionwindowsunix   ...

  7. 【转】python 三种遍历list的方法

    [转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...

  8. 【Java 线程的深入研究1】Java 提供了三种创建线程的方法

    Java 提供了三种创建线程的方法: 通过实现 Runnable 接口: 通过继承 Thread 类本身: 通过 Callable 和 Future 创建线程. 1.通过实现 Runnable 接口来 ...

  9. Oracle数据库三种标准的备份方法

    Oracle数据库的三种标准的备份方法: 1.导出/导入(EXP/IMP). 2.热备份. 3.冷备份. 注释:导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一.导出/导入(Export/Imp ...

随机推荐

  1. PyCharm 上传项目到码云托管平台

    码云平台设置: >先到码云 https://gitee.com/ 注册账号 >创建项目,选择合适项目,点击加号 >填写项目的基础信息 在码云上就创建了项目 >安装 Git    ...

  2. 【游戏体验】Haunted House(鬼屋历险记)

    >>>点此处可试玩无敌版<<< 这款游戏可谓是经典,很多人的童年都有过它的陪伴,不妨重拾当年的快乐 个人测评 游戏性 9/10 音乐 7/10 剧情 4/10 总评 ...

  3. Codeforces Round #618 (Div. 1)B(几何,观察规律)

    观察猜测这个图形是中心对称图形是则YES,否则NO #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace ...

  4. Java查询数据库

    创建数据库 创建 user 数据库 创建 teacher 数据库 teacher表的user_id列与user表的id列建立一对多连接,user_id作为外键. Java编程查询数据库 向user数据 ...

  5. 干了这杯Java,让你的Idea比eclipse好用

    1.Idea基本配置 1.1 Idea简介 Idea是一个专门针对Java的集成开发工具(IDE),由Java语言编写.所以,需要有JRE运行环境并配置好环境变量.简单的说,Idea是写代码用的工具. ...

  6. .NET解所有相机RAW格式照片

    再聊.NET解相机RAW格式照片 上次我发了一篇文章<用.NET解索尼相机ARW格式照片>,提到通过安装Sony Raw File Decoder的方式,然后调用Windows Imagi ...

  7. Redis-消息

    Redis 发布订阅(实际开发不使用) Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图 ...

  8. Java_Habse_add

    import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hb ...

  9. Spring_002 依赖注入方式实现

    继续写我们的第一个Spring程序,这次我们使用依赖注入的方式实现程序 第一步,建立我们的Spring_002程序,并在程序中添加BookDao.java.BookDaoImpl.java.BookS ...

  10. [1/100]Python安装

    Python官方版本下载地址: https://www.python.org/downloads/release (上图为3.8.2网络安装版) 默认安装: pip Python安装模块 tkinte ...