Type interface XXXMapper is not known to the MapperRegistry

最近做项目中报了个错,搞了几个小时才解决,在这里记录下来,以免下次报错的时候在那浪费时间
Type interface XXXMapper is not known to the MapperRegistry
字面意思就是说你用到了这个XXXMapper,然而它没有被注册
网上的说法都是说Mapper xml中的namespace对应的实体类的路径不对,显然在这里不是这个问题
通过debug发现了问题,你先debug到sqlSessionFactory:
查看sqlSessionFactory>>configuration>>mapperRegistry>>knownMappers这时下面会显示已经注册的mapper文件,查看是不是与你的mybatis.xml中设置的一致,这时发现是不一致的
原因如下:
我这里做的项目是maven项目,依赖了两个子工程,a_dao,b_dao,两个dao分别指向不同的数据库
连接数据库的DBUtils都是
public class DBUtils {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
reader = Resources.getResourceAsReader("mybatis.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @return
* @描述:获取SqlSession
*/
public static final SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
这里有两个问题,
1.由于两个子工程的DBUtils 的路径是一致的,都是在这package com.xxx.xx.utils包下,这样工程也不知道引入哪个DBUtils ,可能就引错了,所以这时需要修改其中一个名称为DBUtil

注意:实际上如果不改也是有问题的,因为打包后,两个同名的文件都会放在打包后的com/xxx/xx/utils这个目录下,这是有问题的...

2.第二修改一下dao工程中的mybatis.xml,可以一个为mybatis.xml,一个为mybatis-config.xml,这样名称不一样,在引入的时候也不会搞错

 

转载于:https://www.cnblogs.com/jaro/p/8743551.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值