Mybatis出现org.apache.ibatis.binding.BindingException: Type interface com.hj.dao.UserDao is not known

Mybatis出现org.apache.ibatis.binding.BindingException: Type interface com.hj.dao.UserDao is not known
绑定异常!
类型接口在接口里是未知的!
在核心配置文件里缺少了<mappers>
在核心配置文件config.xml的<configuration>标签里面的最下面添加如下代码:

    <mappers>
        <mapper resource="com.hj.dao.UserMapper.xml"/>
    </mappers>

之后又会报错:
java.lang.ExceptionInInitializerError
Caused by: java.io.IOException: Could not find resource com.hj.dao.UserMapper.xml
找不到对应的UserMapper.xml文件,但是我们是有这个文件的。
如果把这个文件放到resource下,是可以运行的,如果想不放到resource下,怎么办呢?我们可以在build中配置resources,对资源过滤,来防止资源导出失败的问题。
找到工程的pom.xml配置文件,在<project>标签
内增加如下代码:

    <build>
        <resources>
            <resource><!--配置-->
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

原理是:
maven中pom.xml中的build里的resources用来描述工程中资源的位置。resources里的resource标签指定资源的一些参数配置。
其格式为:

<resource>
	<targetPath>META-INF/plexus</targetPath>
	<filtering>false</filtering>
	<directory>${basedir}/src/main/plexus</directory>
	<includes>
	<include>configuration.xml</include>
	</includes>
	<excludes>
	<exclude>**/*.properties</exclude>
	</excludes>
</resource>

其中

  • targetPath:指定build资源到哪个目录,默认是base directory,就是工程的路径。
  • filtering:指定是否将filter文件(即build下的filters里定义的*.property文件)的变量值在这个resource文件有效,例如上面就指定那些变量值在configuration文件无效。
  • directory:指定属性文件的目录,build的过程需要找到它,并且将其放到targetPath下,默认的directory是${basedir}/src/main/resources。
  • includes:指定包含文件的patterns,符合样式并且在directory目录下的文件将会包含进project的资源文件。
  • excludes:指定不包含在内的patterns,如果inclues与excludes有冲突,那么excludes优先,那些符合冲突的样式的文件是不会包含进来的。
  • testResources:这个模块包含测试资源元素,其内容定义与resources类似,不同的一点是默认的测试资源路径是${basedir}/src/test/resources,测试资源是不部署的。
    通常情况下,没有指定resources时,会自动将classpath下的src/main/java下的.class文件和src/main/resources下的.xml文件放到target里头的classes文件夹下的package下的文件夹里。
    比如这个工程。
    在这里插入图片描述

就是将UserDao.class和mybatis-config.xml都放到了target下,此时找不到UserMapper.xml。所以需要对resouce进行配置。
增加了配置以后,可以发现:
在这里插入图片描述
已经在一个文件下了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值