VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > 批处理教程 >
  • mybatis批处理数据

批处理数据主要有三种方式:

1.传统jdbc处理    2.mybatis批处理插入    3.使用executortype处理 

jdbc 处理 

复制代码
1.通过 for循环插入 

main方法如下所示:

Connection comm=null;

PreparedStatement preparedStatement=null;

conn=JdbcUtil.getConnection();

JdbcUtil.begin(conn);

String sql="insert into t_user(username,password)  values(?,?)";

preparedStatement=conn.preparedStatement(sql);

for (int i=0;i<1000;i++)
{
preparedStatement.setString(1, "hello"+(i+1));
preparedStatement.setString(2, "world"+(i+1));
preparedStatement.executeUpdate();
}
JdbcUtil.commit(conn);
}
复制代码

这样就可以进行批量插入 

第二种是使用addbatch方法 

复制代码
main方法如下所示:

Connection comm=null;

PreparedStatement preparedStatement=null;

conn=JdbcUtil.getConnection();

JdbcUtil.begin(conn);

String sql="insert into t_user(username,password)  values(?,?)";

preparedStatement=conn.preparedStatement(sql);

for (int i=0;i<1000;i++)
{
preparedStatement.setString(1, "hello"+(i+1));
preparedStatement.setString(2, "world"+(i+1));
if((i+1)%1000==0){
preparedStatement.addBatch();
preparedStatement.executeBatch();
preparedStatement.clearBatch();
}
}
JdbcUtil.commit(conn);
}
复制代码

两者差距在效果上后者更好一些。

传统的jdbc对数据的批处理有一些缺点 :比如一直使用的是for循环,会浪费大量的时间在session的连接上,而且java代码和sql语句耦合度很大。

mybatis 在处理数据的时候有两种方式,第一种是使用foreach标签,另一种是使用allowMultiQueries=true来完成。

第一种使用foreach 

复制代码
xml文件内容如下:

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

java文件如下 
SqlSession sqlSession=this.getSqlSessionFactory.opensession();
PerSonMapper personMapper=sqlSession.getMapper(PersonMapper.class);
List<Person> persons=new ArrayList<Person>();
for(int i=0;i<5;i++){
Person person=new Person("tom"+i,"email@"+i,"F");
persons.add(person);
}
personMapper.addPersons(persons)
sqlSession.commit();
}
复制代码

另外一种需要配置文件声明allowMultiQueries=true   然后更改 xml文件中, 为;就可以了

 

最后一种批量操作的方法是 executortype的方式 

复制代码
1. xml语句 
insert into person(username,email,gender) values (#{username},#{email},#{gender}) 

java语句 
SqlSession sqlSession=this.getSqlSessionFactory.opensession(ExecutorType.BATCH);
PerSonMapper personMapper=sqlSession.getMapper(PersonMapper.class);
for(int i=0;i<5;i++){
personMapper.addPerson(new Person("wang","email@123.com","F"));

}
 
复制代码

 

 
出处:https://www.cnblogs.com/qiujichu/p/10994806.html


相关教程