不解釋.先上控制台提示:
15:20:15,438 ERROR main mapper.MapperFactoryBean:97 - Error while adding the mapper 'interface com.sml.mapper.admin.DeskTopMapper' to configuration.
java.lang.RuntimeException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Wrong namespace. Expected 'com.sml.mapper.admin.DeskTopMapper' but found 'com.sml.mapper.admin.MenusInformationMapper'.
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:113)
(注:這是我網上copy的類似錯誤提示,本人解決時忘了copy控制台的報錯信息,電腦又卡,所以就懶得再次“錯誤驗證法”運行代碼)! ! !
看到我加紅加粗的報錯信息了嗎,簡單明了,首先是mapper文件導入錯誤,然后是你寫的mapper.xml文件語法分析出錯,也就是說你寫的mapper文件里有一些地方語法不規范,系統無法解析,
最后,控制台簡單粗暴地提示了mapper.xml文件出錯的地方:Wrong namespace,意思就是mapper.xml文件引入的命名路徑有誤,既然這樣,我們就去到mapper.xml里頭看看,然后你會發現:
它就在正文的第一句:<mapper namespace="cn.xxx.mapper.xxxMapper."> 看到了嗎? 我多了一個“ . ”,刪去這個點就沒問題了。
朋友們以后可以細心點,每次導入路徑這些的,都長按Ctrl鍵+鼠標點擊路徑,如果跳轉得過去相關類,就證明路徑沒錯,當然,您必須保證你自己寫的路徑是你想導入的正確接口路徑,錯誤示范:(我應該導入UserMapper,但是我粗心導入了ActionMapper,例如:<mapper namespace="cn.xxx.mapper.ActionMapper">)不然也會報上面的錯誤哦。
如果還是存在一些問題造成類似Mapper文件注解出錯的,別擔心,我還有一個萬能解決法:
(以下是我個人的累積經驗+網上大牛意見的總結)
一般出這種錯誤,無一例外以下幾種情況:
1.jar包是否導入正確,jar有沒有重復的(把低版本的jar刪除,不然容易沖突);
2.在Service層(類似的impI實現類文件是否注解@Service ,又或者是否注入mapper(@Autowired)
例如:@Autowired
private xxxMapper xxxMapper ;
// @Autowired
//private UserXXXMapper userXXXMapper ;
但是,不能多余注入@Autowired,沒用到的mapper就不要多余的注入,不然也會報錯
3.controller層 是否類頭注入@controller
方法中用到的Service,必須用@Autowired注解
例如:@Autowired
private XXXService xxxService;
4.檢查springmvc.xml與spring文件下的appliationContext.xml等子類配置文件是否正確導入包,不然檢索不到dao,Service,impl,controller
5.最后一步,檢查自己寫的mapper兩個文件( .java 和 .xml )是否規范,至於如何規范我就不多描述了,干這行的基本要領。