黑马程序员javaWeb视频mvc构架案例中Mapper里resource,与package遇到的小bug(Could not find resource mai.mapper)

今天再看黑马程序员的Javaweb视频时,突然遇到了视频中老师没有出现的bug,这也怪自己没有看清楚老师写的时候,因为之前敲过类似的mybatis-config.xml文件,直接复制粘贴来了,没有仔细看,然后耽误了好几个小时,大概原代码是这样的
(错误的)

 <mappers>
        <mapper resource="mai.mapper"/>
 mappers>

也是经过好多次观看视频,以为是servlet写错了,或者是resources中新建文件夹需要用“/”区分,但是都不是,一直显示图中的错误
黑马程序员javaWeb视频mvc构架案例中Mapper里resource,与package遇到的小bug(Could not find resource mai.mapper)_第1张图片
后来同学建议我改成

<mappers>
        <package name="mai.mapper"/>
mappers>

然后就解决了问题
黑马程序员javaWeb视频mvc构架案例中Mapper里resource,与package遇到的小bug(Could not find resource mai.mapper)_第2张图片
但是经过这个bug我有发现了另一种方式,但是比较麻烦需要每添加一个xml文件,重新引入一个

<mappers>
        <mapper resource="mai/mapper/BrandMapper.xml"/>
mappers>

后来在csdn上搜索了一下,发现mybatis中的确有这几个的区别

resource加载方式(不太推荐)

适用于类路径下的文件加载(注意:mybatis原始开发Dao.xml文件与接口文件不在同一路径下,仅能用resource加载映射文件)
也就是必须要以“/”为分隔符,就像路径一样,然后直接找到需要用的XML文件
就像上面的那个xml代码。

package 加载方式(推荐)

适用于类路径下,接口文件与映射文件在同一路径下,且接口名与映射文件名相同,并且映射文件命名为接口全类名的情况.也就是这种

<mappers>
        <package name="mai.mapper"/>
mappers>

这个方法比较适用,能够自动扫描package路径下需要的mapper.xml (自己比较推荐)

此外,在csdn中还发现了这种

class加载方式

仅适用于类路径下,接口文件与映射文件在同一路径下,且接口名与映射文件名相同,并且映射文件命名为接口全类名的情况.
黑马程序员javaWeb视频mvc构架案例中Mapper里resource,与package遇到的小bug(Could not find resource mai.mapper)_第3张图片此照片是在其他博主的文档中搜索出来直接截图的,如有冒犯,请原谅

没使用过这种情况,所以没有仔细看,看起来有点复杂,且视频种没有讲过,所以不推荐

你可能感兴趣的:(mvc,bug,mybatis)