利用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 他是新打開的了一個會話,臨時表的資料是查不出來的;
自己瞎寫的 ,如有錯誤請諒解
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/66544.html
標籤:Java相關
上一篇:Spring驗證框架報錯
