Mybatis錯誤引起的程序啟動卡死問題及解決
Mybatis錯誤引起的程序啟動卡死
mybatis xml 錯誤引起的程序啟動卡死(沒有任何報錯信息,控制臺卡死)排除方法
解決辦法
把日志級別提高到debug,查看日志是否有異常信息
新建一個類,繼承 org.mybatis.spring.SqlSessionFactoryBean 類,重載 buildSqlSessionFactory 方法,捕獲 NestedIOException 異常,并打印異常,如下:
public class MySqlSessionFactoryBean extends SqlSessionFactoryBean { protected SqlSessionFactory buildSqlSessionFactory() throws IOException { try { return super.buildSqlSessionFactory(); } catch (NestedIOException e) { //- XML有錯誤時打印異常 e.printStackTrace(); throw new NestedIOException("Failed to parse mapping resource: " + e); } } }
修改 mybatis 配置文件 把org.mybatis.spring.SqlSessionFactoryBean 替換為新建的類,再次啟動可以在控制臺輸出mybatis異常信息。
原因分析
Spring解析mapper.xml文件時,執(zhí)行SqlSessionFactoryBean.buildSqlSessionFactory()到斷點時,拋出的異常被spring處理,但是沒有輸出日志信息,
Mybatis啟動錯誤
今天在復習mybatis的基礎的時候出現了錯誤信息,
具體報錯如下
Exception in thread "main" org.apache.ibatis.binding.BindingException: Type interface com.hxb.mapper.AccountMapper is not known to the MapperRegistry.
at org.apache.ibatis.binding.MapperRegistry.getMapper(MapperRegistry.java:47)
at org.apache.ibatis.session.Configuration.getMapper(Configuration.java:745)
at org.apache.ibatis.session.defaults.DefaultSqlSession.getMapper(DefaultSqlSession.java:292)
at com.hxb.test.test1.main(test1.java:22)
主要內容是說找不到接口,問題可能有兩個
1、沒有將mapper文件注冊到resource文件中。
<mappers> ? ?<mapper resource="com/hxb/mapper/AccountMapper.xml"/> </mappers>
2、還有一種錯誤是mapper.xml文件中的namespace文件寫錯。
<mapper namespace="com/hxb/mapper/AccountMapper"> // 錯誤寫法 <mapper namespace="com.hxb.mapper.AccountMapper"> // ?正確寫法
總結,不用寫后綴的情況下用".",需要后綴的時候用/
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。