這是我做成的工具類
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}然后測驗時發現
@Test
public void testConnection(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
System.out.println(sqlSession);
}
盡管連接資料庫的密碼是錯誤的,sqlSession還是能創建出來

于是我試者排錯
1.可能是之前的sqlSession沒關閉,讀取的是上次的sqlSession
2.在IDEA連接了資料庫,我把IDEA連的資料庫關了,甚至把資料庫整個服務都停了
可還是能創建sqlSession
按我的理解,mybatis是根據mybatis-config.xml創建出sqlSessionFactory,再由sqlSessionFactory.openSession()出sqlSession,
問題是mybatis-config.xml連接資料庫的賬戶密碼是錯的 sqlSessionFactory是怎么創建出來的
uj5u.com熱心網友回復:

密碼和驅動也沒用上
uj5u.com熱心網友回復:
因為獲取連接可不在這里
最終通過是Transaction介面獲取connection,前提是執行Executor的查詢或者更新方法
uj5u.com熱心網友回復:
啊這 我以為sqlSession才是來獲取連接的 那sqlSession是干嘛用的 而且我組態檔寫的密碼也是錯的 按理連都不連不上 sqlSession應該也創建不出來吧
uj5u.com熱心網友回復:
老鐵估計什么Transaction和Executor,DataSource這些也不是特別清楚,所以沒必要了解這么多!只要知道,mybatis查詢和修改表資料,交給了sqlsession處理,但這并不代表,底層庫的相關操作是他直接操作的
uj5u.com熱心網友回復:
老鐵估計什么Transaction和Executor,DataSource這些也不是特別清楚,所以沒必要了解這么多! 因為獲取連接可不在這里
最終通過是Transaction介面獲取connection,前提是執行Executor的查詢或者更新方法
啊這 我以為sqlSession才是來獲取連接的 那sqlSession是干嘛用的 而且我組態檔寫的密碼也是錯的 按理連都不連不上 sqlSession應該也創建不出來吧
只要知道,mybatis查詢和修改表資料,交給了sqlsession處理,但這并不代表,底層庫的相關操作是他直接操作的
萌新 剛學完SSM框架 想重構之前的專案 結果好多坑 學藝不精 謝謝大佬
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/255745.html
標籤:Web 開發
