maven导出异常:MapperRegistry、Mapper.xml、mybatis-config.xml

2023-10-22 12:50

本文主要是介绍maven导出异常:MapperRegistry、Mapper.xml、mybatis-config.xml,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 错误一

1.1 错误信息

org.apache.ibatis.binding.BindingException: Type interface com.zy.dao.UserDao is not known to the MapperRegistry.

1.2 原因分析

没有Mybatis的核心配置文件Mybatis-config.xml中注册新建的Mapper

1.3 解决方式

在Mybatis的配置文件Mybatis-config.xml中注册新建的UserMapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--Mybatis核心配置文件-->
<configuration><environments default="development"><!-- 开发库--><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url"value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;characterEncoding=UTF-8&amp;serverTimeZone=GMT"/><property name="username" value="root"/><property name="password" value="mysql123"/></dataSource></environment></environments><!--定义好的Mapper要在mybatis配置文件中注册,不然它找不到--><mappers><mapper resource="com/zy/dao/UserMapper.xml"/></mappers>
</configuration>

2. 错误二

2.1 错误信息

The error may exist in com/zy/dao/UserMapper.xml
Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/zy/dao/UserMapper.xml

2.2 原因分析

Mybatis在解析Mapper映射时没找到我们刚才配置的映射。去代码编译生成的target中找果然没找到。
在这里插入图片描述
什么原因呢?其实是maven在项目启动构建的时候默认是不支持打包我们自建的xml或者properties配置文件的。

2.3 解决方案

就是在项目的pom.xml配置文件中添加maven在build打包时搜索的文件路径和支持的文件格式

<build>
<!-- 在build中添加resources节点,来防止我们资源导出失败的问题 -->
<resources><resource><directory>src/main/resources</directory><excludes><exclude>**/*.properties</exclude><exclude>**/*.xml</exclude></excludes><filtering>false</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource>
</resources>
</build>

3. 错误三

3.1 错误信息(未解决)

Could not find resource mybatis-config.xml

3.2 原因分析

通过观察可以发现,在我们向pom.xml配置文件中添加打包时搜索的文件范围和支持的文件格式之前,在打包时是会把我们的mybatis-config.xml配置文件打包到target目录下的,此时的报错是找不到mapper.xml,在添加了build-resources配置之后,打包了mapper.xml,但又缺少了mybatis-comfig.xml。所以问题就是我们添加的build-resources配置有问题,上面的build-resources配置中src/main/resources是说在打包时要打包src/main/resources目录下的内容,而通过刚才的现象,其实maven打包时默认就是会把src/main/resources目录下的文件打包到target目录的,所以这个配置就是多余的。基于这个推理,就尝试注释了pom.xml中src/main/resources的配置,运行之后发现就没有报错了,在打包目录target下mybatis-config.xml和UserMapper.xml都有了

3.3 解决方案

注释掉pom.xml配置中duild-resources中的src/main/resources配置
注意:注释掉上面的配置后一定要clear原有的maven打包目录,重启idea,目的就是清除旧配置的缓存

<build><!-- 在build中添加resources节点,来防止我们资源导出失败的问题 --><resources><!--<resource>--><!--<directory>src/main/resources</directory>--><!--<excludes>--><!--<exclude>**/*.properties</exclude>--><!--<exclude>**/*.xml</exclude>--><!--</excludes>--><!--<filtering>false</filtering>--><!--</resource>--><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources>
</build>

这个问题几天后打开IDEA重新运行之后又出现了,最终手动把mybatis-config.xml放到target/classes目录下(浪费的时间已经太多了)。所以上的方法还是不行。有找到的方法的兄弟可以评论告知我,感谢!!!

这篇关于maven导出异常:MapperRegistry、Mapper.xml、mybatis-config.xml的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/261587

相关文章

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

Java异常捕获及处理方式详解

《Java异常捕获及处理方式详解》异常处理是Java编程中非常重要的一部分,它允许我们在程序运行时捕获并处理错误或不预期的行为,而不是让程序直接崩溃,本文将介绍Java中如何捕获异常,以及常用的异常处... 目录前言什么是异常?Java异常的基本语法解释:1. 捕获异常并处理示例1:捕获并处理单个异常解释:

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页

MyBatis流式查询两种实现方式

《MyBatis流式查询两种实现方式》本文详解MyBatis流式查询,通过ResultHandler和Cursor实现边读边处理,避免内存溢出,ResultHandler逐条回调,Cursor支持迭代... 目录MyBATis 流式查询详解:ResultHandler 与 Cursor1. 什么是流式查询?

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

mybatis用拦截器实现字段加解密全过程

《mybatis用拦截器实现字段加解密全过程》本文通过自定义注解和MyBatis拦截器实现敏感信息加密,处理Parameter和ResultSet,确保数据库存储安全且查询结果解密可用... 目录前言拦截器的使用总结前言根据公司业务需要,灵活对客户敏感信息进行加解密,这里采用myBATis拦截器进行简单实

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC