我的是这样的:
  try {
         Connection con = dataSourse.getConnection();
           MappedStatement stmt = sqlMap.getMappedStatement("sql");
           stmt.executeUpdate(con,param);
}  finally [
 try {
 con.close();  // 关闭
   }catch(SQLException e){
       something;
 }
}

解决方案 »

  1.   

    请问你这个是用ibatis来连数据库的吗?好像是jdbc的吧?
    Connection 是哪个包的?sqlMap是什么类型的?
      

  2.   

    1、平时mysql的连接数上了500都会挂掉,但现在即使到了900也没问题,请问这个是为什么呢?
    mysql的sleep状态是等待连接的,mysql可以设定连接等待时间,如果超时的话sleep就关闭
    2、这种情况是ibatis没有释放数据库连接吗?
    ibatis会自动释放连接的
    3、ibatis的手册没有提到要主动回收连接,好像sqlmap也没有close之类的方法,我如何能释放数据库连接呢?
    4、我的ibatis的连接代码是这样的
      Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
      SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
      reader.close();
      然后就用sqlMapper.queryForList()这样来获取数据的,请问这样有问题吗?还需要什么代码来释放数据库连接呢?
    ibatis在进行事务处理时,当执行commitTransaction()或rollbackTransaction()的时候连接会关闭
    另外如果不进行显示事务调用的话,连接也是自动关闭的
      

  3.   

    那为什么有那么多sleep的线程呢?而且我每次查询都会重新生成这些mysql线程,没有利用回那些sleep的连接。
    但是我直接用jdbc来连的话,每次查询完,mysql的线程就会回收的了,最多也只有3、4条在sleep的。
      

  4.   

    ibatis会自动释放连接的。。其实LZ可以不用这样连的。
      

  5.   

    多谢各位相助!已经解决了!
    造成mysql产生那么多sleep的连接的原因是我用了ibatis默认的SIMPLE的连接池!后来我改用了DBCP后一切正常了,而且感觉上速度也快了很多!如果不是我没有配置好SIMPLE的原因的话,看来ibatis的自带的连接池只能是用来学习,实际应用是用不了的!
    谢谢各位,马上结贴!
    总结一下:还是apache的东西好用!
      

  6.   

    你是怎么使用DBCP配置调用的呀?能不能给一个比较完整的例子呢?
      

  7.   

    我也遇到了同样的问题, 我的是用Struts1+Srping+ibatis 进行开发的,用的是oracle数据库,数据库连接数设置的是300,用的也是queryForList()方法,但是连接数会一直不停的涨,涨到300就死掉了!~求解惑