Mybatis錯(cuò)誤引起的程序啟動(dòng)卡死問(wèn)題及解決
Mybatis錯(cuò)誤引起的程序啟動(dòng)卡死
mybatis xml 錯(cuò)誤引起的程序啟動(dòng)卡死(沒(méi)有任何報(bào)錯(cuò)信息,控制臺(tái)卡死)排除方法
解決辦法
把日志級(jí)別提高到debug,查看日志是否有異常信息
新建一個(gè)類(lèi),繼承 org.mybatis.spring.SqlSessionFactoryBean 類(lèi),重載 buildSqlSessionFactory 方法,捕獲 NestedIOException 異常,并打印異常,如下:
public class MySqlSessionFactoryBean extends SqlSessionFactoryBean { protected SqlSessionFactory buildSqlSessionFactory() throws IOException { try { return super.buildSqlSessionFactory(); } catch (NestedIOException e) { //- XML有錯(cuò)誤時(shí)打印異常 e.printStackTrace(); throw new NestedIOException("Failed to parse mapping resource: " + e); } } }
修改 mybatis 配置文件 把org.mybatis.spring.SqlSessionFactoryBean 替換為新建的類(lèi),再次啟動(dòng)可以在控制臺(tái)輸出mybatis異常信息。
原因分析
Spring解析mapper.xml文件時(shí),執(zhí)行SqlSessionFactoryBean.buildSqlSessionFactory()到斷點(diǎn)時(shí),拋出的異常被spring處理,但是沒(méi)有輸出日志信息,
Mybatis啟動(dòng)錯(cuò)誤
今天在復(fù)習(xí)mybatis的基礎(chǔ)的時(shí)候出現(xiàn)了錯(cuò)誤信息,
具體報(bào)錯(cuò)如下
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)
主要內(nèi)容是說(shuō)找不到接口,問(wèn)題可能有兩個(gè)
1、沒(méi)有將mapper文件注冊(cè)到resource文件中。
<mappers> ? ?<mapper resource="com/hxb/mapper/AccountMapper.xml"/> </mappers>
2、還有一種錯(cuò)誤是mapper.xml文件中的namespace文件寫(xiě)錯(cuò)。
<mapper namespace="com/hxb/mapper/AccountMapper"> // 錯(cuò)誤寫(xiě)法 <mapper namespace="com.hxb.mapper.AccountMapper"> // ?正確寫(xiě)法
總結(jié),不用寫(xiě)后綴的情況下用".",需要后綴的時(shí)候用/
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java微信支付之公眾號(hào)支付、掃碼支付實(shí)例
微信支付已經(jīng)成為生活中必不可少的付款方式,本篇文章主要介紹了Java微信支付之公眾號(hào)支付、掃碼支付,有需要的小伙伴可以了解一下。2016-11-11Mybatis示例講解注解開(kāi)發(fā)中的單表操作
這篇文章主要介紹了使用Mybatis對(duì)數(shù)據(jù)庫(kù)進(jìn)行單表操作的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07利用JStack排查死鎖問(wèn)題和CPU100%問(wèn)題
無(wú)論是再面試過(guò)程中還是再實(shí)際項(xiàng)目開(kāi)發(fā)當(dāng)中我們都有可能遇到這兩個(gè)問(wèn)題如何利用JStack排查死鎖問(wèn)題和CPU100%問(wèn)題,文中給出了詳細(xì)的排查過(guò)程和解決方法,需要的朋友可以參考下2023-12-12Java設(shè)計(jì)模式初識(shí)之備忘錄模式詳解
備忘錄設(shè)計(jì)模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用于實(shí)現(xiàn)防丟失、撤銷(xiāo)、恢復(fù)等功能。本文將通過(guò)示例為大家介紹一些備忘錄模式的定義與使用,需要的可以參考一下2022-11-11Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(53)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-08-08