利用jdbc 批处理进行大数据的插入时可节省时间,提高效率;代码如下
Connection conn=null;
PreparedStatement ps=null;
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
conn = sqlSession.getConnection();
if(list!=null&&list.size()>0) {
conn.setAutoCommit(false);
ps = conn.prepareStatement(
"insert into table_test" + " (cloumn) values (?)" );
for (int i = 0; i < list.size(); i++) {
ps.setString(1,list.get(i));
ps.addBatch();
}
ps.executeBatch();
List<String> detailList = sqlSession.getMapper(Mapper.class).query();
conn.commit();
conn.close();
}
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
用sqlSession.getMapper 是因为如果conn是新生成一个会话;而临时表只能在这个会话中有效,下边再按照平时的方法去调用mapper的方法的时候 ,当你重新写一个select 他是新打开的了一个会话,临时表的数据是查不出来的;
自己瞎写的 ,如有错误请谅解