关于idea mybatis 静态资源无法加载到target的一种解决方案

环境

 idea2019.3.3
 JDK8
 Mybatis3.5.3
 Junit4.12
 MySQL5.7.29(Docker)
 MySQL驱动5.1.47

项目过程:

  1. 新建maven项目
  2. 导入依赖
  3. 编写pojo类、Dao接口、DaoMapper映射文件,mybatis核心配置文件、MybatisUtil类
  4. pom.xml文件配置静态资源过滤–maven build标签
  5. 编写测试类并运行
  6. 报错 :
java.io.IOException: Could not find resource mybatis-config.xml

本人并不是第一次使用mybatis,之前都能正常加载文件,无类似报错发生

此时打开target文件夹,发现没有Mapper.xml和核心配置文件,并且target根目录下只有两个文件夹classes和test-classes
开始以为是代码问题导致无法加载,测试代码如下

 SqlSession session = MybatisUtil.getSession();
        List<User> users = session.getMapper(UserMapper.class).getUserList();
        for (User user : users) {
            System.out.println(user);
        }
        session.close();

工具类代码如下

public class MybatisUtil {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //获取SqlSession连接
    public static SqlSession getSession(){
        return sqlSessionFactory.openSession();
    }

}

在这里插入图片描述
很明显在测试代码的第一行出错,没有成功读取到核心配置文件,后续代码无法判定是否对错
此时的问题是:已经配置静态资源过滤的情况下依旧没有加载到Mapper.xml和核心配置文件,并且本身resources文件夹下的资源应该是自动加载的,也没有执行

解决方式

为了验证后续代码是否出错,手动将文件复制到target/classes文件夹下
在这里插入图片描述
运行测试代码,成功运行

意外的情况

为了解决问题,通过maven clean插件将缓存(target文件夹)清除,想着通过错误日志排除和解决问题,重新运行代码,这次依旧运行成功,查看target文件夹
在这里插入图片描述
之后尝试多次清除缓存进行测试,依旧正常加载配置文件并运行

结论:
idea 加载机制可能存在某些问题,通过手动将配置文件放到target文件夹并运行后,才可以正常加载静态资源

最后:
以前和之后都曾创建过类似的 mybatis maven项目,仅仅这次发生报错,记录以防以后有类似情况

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值