singleStandard
2019-01-02 15:01
采纳率: 25%
浏览 5.0k
已采纳

关于mybatis引用mapper.xml文件的路径问题

我是看 https://www.cnblogs.com/xdp-gacl/p/4261895.html 的入门例子照着写的:

先是定义了User类,然后写一个conf.xml的myBatis配置文件,再写一个sql映射文件命名为userMapper.xml,最后再conf.xml中用resource标签引入userMapper.xml。

但博客里是普通的java项目,路径引用我知道怎么写。而我创建的是maven-webapp项目,不知道怎么写路径地址了。

项目结构如下:

图片说明

在mybatis-config.xml文件里添加了mapper,是这么引用的:

 <mapper resource="userMapper.xml"/>

能正常运行,但是有几个问题:

-

1. 我看到网上说在src/main/resources下的xml文件,在配置文件里引用时,好面可以写上classpath,如:

<mapper resource="classpath:userMapper.xml"/>

但我试了,却找不到userMapper.xml。想请问下,classpath代表什么,是怎么用的呢?

2. 同样写这句:

<mapper resource="userMapper.xml"/>

由于src/main/java 和 src/main/resources的output folder都是mybatis/target/classes,但我把userMapper.xml移到src/main/java下,运行却提示找不到userMapper.xml呢?

3. 我现在是把mybatis-config.xml文件放在src/main/resources下,Test类中是这么写的资源地址:

String resource = “mybatis-config.xml”;
但如果我要把xml放到src/main/java下,要怎么写呢?

补充:

求助各位,谢谢啦。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 庄粟 2019-01-02 07:43
    已采纳

    你莫不是看岔了? xml里resourc=xxx.xml? 什么意思
    xml里可以指定相对应的dao接口 如 :<mapper namespace="com.xxx.xx.xxxDao">
    提示找不到xml,你配置的xml路径是什么呢.把 配置内容 代码 放出来.

    已采纳该答案
    打赏 评论
  • 强化脑细胞 2019-01-02 07:25

    classpath是指 WEB-INF文件夹下的classes目录

    打赏 评论
  • 飘零碎步 2019-01-02 10:14

    看编译后代码目录比较直观,列如图片说明

    打赏 评论
  • qq_38181513 2019-01-04 14:19
    打赏 评论
  • 悬弧 2021-08-03 09:24

    首先,现在很少人用xml作为配置文件的了,因为现在主流的项目都是用spring boot,都是配置文件配置的,很少用xml作为配置mybatis配置文件了,SQL可以用xml,放在独立文件夹下,方便区分

    为什么要放到resource下?因为src上主要是代码区,是要进行编译的,而resource主要存放的是静态资源或者配置文件,不需要编译,直接打包

    classpath就相当于你项目运行的路径目录下,resource打包后和src编译后的目录是同级,因此,你在使用classpath:UserMapper.xml时可以引用得到,当然,这要是UserMapper.xml 直接在resource目录下的情况,如果是在某文件夹下的话,还得需要加文件夹的路径,如:classpath:mapper/UserMapper.xml

    打赏 评论

相关推荐 更多相似问题