欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MyBatis批量添加数据2种实现方法

程序员文章站 2023-02-20 21:09:54
1.通过for each标签拼接sql(数量较少的时候使用)  a.拼接values()  public int addpersons(@param("persons") list

1.通过for each标签拼接sql(数量较少的时候使用)

  a.拼接values()

  public int addpersons(@param("persons") list<person> persons);//接口

<insert id="addpersons">
 insert into person(username,email,gender) values
  <foreach collection="persons" item="person" separator=";">
   (#{person.username},#{person.email},#{person.gender})
  </foreach>
 </insert>

<!--类似的效果 insert into person(username,email,gender) values("zhangsan","zhangsan@163.com","f"),("lisi","lisi@163.com","f"),... -->

  b.拼接insert sql语句(需设置属性allowmultiqueries=true)

jdbc.driver=com.mysql.jdbc.driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?allowmultiqueries=true //需设置属性
jdbc.username=root
jdbc.password=123

public int addpersons(@param("persons") list<person> persons);//接口

<insert id="addpersons">
  insert into person(username,email,gender) values
  <foreach collection="persons" item="person" separator=",">
   (#{person.username},#{person.email},#{person.gender})
  </foreach>
 </insert>
<!--类似的效果 insert into person(username,email,gender) values("tom","zhangsan@163.com","f");
        insert into person(username,email,gender) values("jerry","lisi@163.com","f");...-->

2.基于session的executortype进行批量添加

先定义一条插入一条记录的方法

public int addperson(user user); //接口

 <insert id="addperson" parametertype="user">
  insert into t_user(username,address) values (#{username},#{address})
 </insert>

在java代码中使用

public void testbatchforexecutor()
  {
    sqlsession sqlsession = this.getsqlsessionfactory().opensession(executortype.batch); //通过session设置executortype开启批量添加,类似jdbc的addbatch操作
    personmapper personmapper = sqlsession.getmapper(personmapper.class);
    for (int i = 0; i <10000 ; i++)
    {
      personmapper.addperson(new user("jerry","bj"));
    }
    sqlsession.commit();
    sqlsession.close();
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。