上次簡單記錄了學習Mybatis框架遇到的問題及解決方法,今天又發現了一些細小的問題,在這里記錄下來。
在使用Mybatis框架操作數據庫時,其中需要創建輸入流將xml配置文件加載進來,用到的方法是getResourceAsStream(資源)
但是,這里需要注意一下,getResourceAsStream方法在多個包中都存在,但是不同包中對於方法的使用略有差別,我們再編程時大多時候使用快捷鍵生成代碼而非完全手工輸入,在自動生成是很容易忽略方法源,這里着重說明區別,區別就是一個斜杠——”/“。
或許有很多小伙伴在遇到Exception in thread "main" java.lang.NullPointerException錯誤時,從網上找到的解決方法是getResourceAsStream(/+配置文件名.xml)
這里,我調用方法的寫法為:
InputStream inputStream = Resources.class.getResourceAsStream("/MyConfig.xml");
編寫時發現:在這種方式下,不需要進行拋出或者自定義異常處理,目前還不清楚為什么不需要,以下截圖主要觀察紅色標出的一行,可見需要在xml配置文件前加上”/“。
但在我使用時意外又調用了不同包下的getResourceAsStream方法,同樣添加一個”/“,卻報錯了,錯誤提示為:java.io.IOException: Could not find resource /MyConfig.xml
這里,我調用方法的寫法為:
InputStream inputstream = org.apache.ibatis.io.Resources.getResourceAsStream("MyConfig.xml");
經過一番嘗試發現:在這種方式下,不需要添加”/“,但是需要加入拋出或者自定義異常處理,以下截圖主要觀察紅色標出的一行,沒有”/“。
總結:
方法一:
①需要添加異常處理
②xml配置文件前需要添加”/“
③寫法為Resources.class.getResourceAsStream()
方法二:
①需要添加異常處理
②xml配置文件前不需要添加"/"
③寫法為:org.apache.ibatis.io.Resources.getResourceAsStream(),部分編程環境可能直接是Resources.getResourceAsStream(),例如myecplise編程環境就不需要前面的調用路徑org.apache.ibatis.io(我是用的是ecplise編程環境,不知道為什么一定需要加上調用路徑,不加還報錯 = =!)
注意:以上方法的討論的代碼都是使用Alt+”/“快捷鍵自動生成的,不建議自己打,一方面提高編程效率,節省時間;另一方面可降低編寫錯誤的風險。
后記:有關拋出異常處理的詳細內容在學習java時學習過,但沒有深入理解,我覺得需要補充一下。