1. 程式人生 > >Mybatis迴圈插入報資料庫連線超過最大數

Mybatis迴圈插入報資料庫連線超過最大數

今天用mybatis迴圈插入資料的時候,插到一百條左右的時候,突然報錯,意思就是mysql連線數已經達到最大數。
我看到就想應該是插入一條資料的時候沒有釋放連線,就百度怎麼釋放連線,回答說是mybatis能自動釋放連線,但是在高併發也會出現這種結果,但是明顯這種問題不是高併發。
後來發現我在SqlSessionFactory例項化太多了,導致報錯,改成只例項化一個就好了,這個問題我感覺可能初學者會犯,記錄一下

之前的錯誤程式碼

private SqlSessionFactory factory;

public static void setUp() throws Exception{
    String resource = "SqlMapConfig.xml";
    //通過流將核心配置檔案讀取進來
    InputStream inputStream = Resources.getResourceAsStream(resource);
    //通過核心配置檔案輸入流來建立會話工廠
    factory = new SqlSessionFactoryBuilder().build(inputStream);
}

public void testFindUserById() throws Exception{
    setUp();
    SqlSession openSession = factory.openSession();
    ///通過getMapper方法來例項化介面
    UserMapper mapper = openSession.getMapper(UserMapper.class);

    User user = mapper.findUserById(1);
    System.out.println(user);
}

改正之後

private SqlSessionFactory factory;

static {
    String resource = "SqlMapConfig.xml";
    //通過流將核心配置檔案讀取進來
    InputStream inputStream;
    try {
        inputStream = Resources.getResourceAsStream(resource);
        //通過核心配置檔案輸入流來建立會話工廠
        factory = new SqlSessionFactoryBuilder().build(inputStream);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public void findUserById(int id) throws Exception{
    SqlSession openSession = factory.openSession();
    ///通過getMapper方法來例項化介面
    UserMapper mapper = openSession.getMapper(UserMapper.class);

    User user = mapper.findUserById(id);
    openSession.commit();
    openSession.close();
    System.out.println(user);
}

相關推薦

Mybatis迴圈插入資料庫連線超過大數

今天用mybatis迴圈插入資料的時候,插到一百條左右的時候,突然報錯,意思就是mysql連線數已經達到最大數。 我看到就想應該是插入一條資料的時候沒有釋放連線,就百度怎麼釋放連線,回答說是mybat

解決Oracle+Mybatis批量插入錯:SQL 命令未正確結束

每次 rom list ins 配置文件 解決 報錯 文件 什麽 Mybatis批量插入需要foreach元素。foreach元素有以下主要屬性: (1)item:集合中每一個元素進行叠代時的別名。 (2)index:指定一個名字,用於表示在叠代過程中,每次叠代到的位置。

mybatis批量插入錯“Parameter '__frch_item_0' not found. Available parameters are [list]”

原sql: <select id="queryList" parameterType="java.util.List" > insert into table1(column1,column2,column3,column4,column5) ( <f

迴圈裡建立資料庫連線,嚴重影響資料庫效能

在迴圈裡面去操作資料庫肯定會慢的,而且還容易碰到新手,在迴圈裡面建立資料庫連線,會導致連線數滿。一般查詢的話,在外層一次性查詢出來 然後 在邏輯層去迴圈組織資料。如果是新增,則可以考慮使用批量插入的方法去處理。 查詢的話,在外層一次性查詢出來 然後 在邏輯層去迴圈組織資

MyBatis 入門(一)--建立資料庫連線及基本操作

一、 資料庫建表 CREATE TABLE `user` ( `userId` int(11) NOT NULL AUTO_INCREMENT, `UserName` varchar(45) NOT NULL, `UserEmail` varcha

mybatis 迴圈插入List集合

1.如果傳入的是單引數且引數型別是一個List的時候,collection屬性值為list 2.如果傳入的是單引數且引數型別是一個array陣列的時候,collection的屬性值為array

Tomcat 伺服器啟動很慢,資料庫連線不上,又參雜了其他專案的錯誤

       這幾天吃不好睡不好就是因為部署專案,啟動Tomcat報了連線不上資料庫(連線超時),我把ssh的幾個配置檔案重新看了好幾遍,我就納悶了,這到底是怎麼回事呀?我把錯誤資訊拿到網上查,一一看解決方案,幾乎都試了一遍還是報錯,心碎了!於是乎找群裡大神們問問,都建議叫我檢查程式碼,相關的配置檔案,可我之

mybatis批量插入錯:','附近有錯誤

mybatis批量插入的時候報錯,報錯資訊‘,’附近有錯誤 mapper.xml的寫法為 <insert id="insertByBatch"> INSERT INTO USER_LOG (USER_ID, OP_TYPE

mybatis批量插入錯“Parameter '__frch_item_0' not found. Available parameters are [list]”

原sql: <select id="queryList" parameterType="java.util.List" > insert into table1(column1,column2,column3,column4,column5)

ASP.NET使用ORACLE資料庫,遊標超過大數錯誤處理。

第一次接觸ORACLE資料庫,感覺和SQL SERVER太多的不同了,光是個自增長值就讓我忙活了好長時間。不過今天不是來說這個問題的,且說說我遇到的另一個問題,關於ORACLE提示“遊標超過最大數”的錯誤。前幾天一直髮現自己的程式在頁面多次重新整理或者多個人同時訪問時,會捕獲

mybatis批量分批次插入oracle資料庫ORA-01745: 無效的主機/繫結變數名...

方法一:迴圈呼叫插入單條記錄的方法,效率真心讓人捉急 (3萬條資料,快三分鐘)     public int saveGwghidlist1(List<Gwghid> list) {                  int xh=0;         dele

java mybatis 關於中向資料庫插入資料時,錯java.lang.NullPointerException的問題

今天在實現向MySQL的資料庫insert一個Object資料時出現一個錯誤; org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptio

mybatis插入語句如何插入資料庫中某一欄位大值(純sql實現)

<insert id="inserts"> <selectKey keyProperty="ID" ORDER="BEFORE" resultType="java.lang.I

利用C3P0連線連線mysql資料庫超過幾小時後連線wait_timeout錯誤

之前做了一個小專案,用的是C3P0連線池連線mysql資料庫,由於連線數目較小,隔天再連線發現報如下異常錯誤,然後重新重新整理後又正常: 之後檢視資料後發現是因為 :MySQL 的預設設定下,當一個連線的空閒時間超過8小時後,MySQL 就會斷開該連線,而 c3p0 連線

mybatis 動態sql 插入

method div exce 必須 字段 timeval blog ora eval 1. 值為null必須制定jdbcType 單條執行的話,可以考慮把值為null的字段去掉 2. 值的類型無法解析 比如oracle.sql.TIMESTAMP類型,需轉

連線mysql資料庫連線錯,是pom檔案配置mysql連線驅動版本號問題

前一段時間安裝了最新的mysql 8.0.11,然後啟動一個專案的時候報錯資訊如下: [ERROR] 2018-08-14 17:28:21,246 method:com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:6

MyBatis原始碼解析之資料來源(含資料庫連線池簡析)

一.概述: 常見的資料來源元件都實現了javax.sql.DataSource介面; MyBatis不但要能整合第三方的資料來源元件,自身也提供了資料來源的實現; 一般情況下,資料來源的初始化過程引數較多,比較複雜; 二.設計模式: 為什麼要使用工廠模式     資料來

遠端登陸Windows2000系統,提示計算機已經超過連線

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Mybatis foreach insert list 【 迴圈插入多條資料】

目的:mybatis 迴圈插入多條資料 dao void savaUploadImgInfo(@Param("albumList") List<Album> albumList); mapper: <insert id="savaUploadImgInfo"

關於資料庫連線NullpointerException 錯誤的問題處理方法

public class Sql { Connection cnn=null; ResultSet rs=null; Statement stm=null; public void connection() { try{ //載入註冊SQLSever的J