Mybatis 中Mapper使用package方式配置报错的解决方案

 更新时间:2021年07月13日 10:58:31   作者:拉丝的裤衩  
这篇文章主要介绍了Mybatis 中Mapper使用package方式配置报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

踩了个坑,写出来

Mybatis 中Mapper使用package方式配置报错

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

UserDaoTest中调用了UserDao的insert方法。

1.项目结构如下

2.UserDao接口

package com.mybatis.dao; 
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; 
import java.util.List;
import com.mybatis.pojo.User;
 
@Mapper
public interface UserDao {
    void insert( User user); 
    int insertSelective(@Param("user") User user); 
    int insertList(@Param("users") List<User> users); 
    int update(@Param("user") User user); 
    User findbyId(@Param("id")Integer id); 
}

3.UserDao.xml

4.Mybatis配置文件 Mybatis-config.xml

已经按照正常的package的配置方式,将接口与xml文件放在同一个目录下,其他配置也没问题,就是报找不到UserDao中的方法。

结果去target中看了一眼发现,xml文件没加载。。。。。

解决方案

原来是IDEA maven项目默认不会把src下除java文件外的文件打包到classes文件夹下,需要在maven中增加配置如下

 <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <!--默认是true-->
                <!--<filtering>true</filtering>-->
            </resource>
        </resources>
    </build>

这样xml文件就可以加载了,动态代理为UserDao接口生成实现类,而实现类的具体实现细节就是在xml中,通过package扫描的方式找到xml,就可以正确的生成UserDao的代理类了。

而xml无法加载,就会造成动态代理生成的代理类是无效的(这个代理类对象是可以生成的),当调用方法就会出现开头的错误。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java如何基于ProcessBuilder类调用外部程序

    Java如何基于ProcessBuilder类调用外部程序

    这篇文章主要介绍了Java如何基于ProcessBuilder类调用外部程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Java解决计算相邻两个数的最大差值的问题

    Java解决计算相邻两个数的最大差值的问题

    今天给大家带来一道算法题:给定一个数组,求如果排序之后,相邻两数的最大差值。要求时间复杂度O(N),且要求不能用非基于比较的排序。快来跟随小编一起学习一下如何解决这一问题吧
    2021-12-12
  • Java源码刨析之ArrayDeque

    Java源码刨析之ArrayDeque

    ArrayDeque是Deque接口的一个实现,使用了可变数组,所以没有容量上的限制。同时, ArrayDeque是线程不安全的,在没有外部同步的情况下,不能再多线程环境下使用<BR>
    2022-07-07
  • Java项目的目录结构详解

    Java项目的目录结构详解

    本文主要介绍了Java项目的目录结构详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Java自动生成编号的方法步骤

    Java自动生成编号的方法步骤

    在新增数据时,往往需要自动生成编号,本文主要介绍了Java自动生成编号的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • springboot登陆过滤功能的实现代码

    springboot登陆过滤功能的实现代码

    这篇文章主要介绍了springboot登陆过滤功能的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Java实现几十万条数据插入实例教程(30万条数据插入MySQL仅需13秒)

    Java实现几十万条数据插入实例教程(30万条数据插入MySQL仅需13秒)

    这篇文章主要给大家介绍了关于Java如何实现几十万条数据插入的相关资料,30万条数据插入MySQL仅需13秒,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-04-04
  • IDEA启动服务提示端口被占用,Web server failed to start.Port was already in use.

    IDEA启动服务提示端口被占用,Web server failed to start.Port was al

    这篇文章主要介绍了IDEA启动服务提示端口被占用,Web server failed to start.Port was already in use.,本文给大家分享解决方案,分为linux系统和windows系统解决方案,需要的朋友可以参考下
    2023-07-07
  • Java如何实现Unicode和中文相互转换

    Java如何实现Unicode和中文相互转换

    这篇文章主要介绍了Java如何实现Unicode和中文相互转换问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Android开发中实现用户注册和登陆的代码实例分享

    Android开发中实现用户注册和登陆的代码实例分享

    这篇文章主要介绍了Android开发中实现用户注册和登陆的代码实例分享,只是实现基本功能,界面华丽度就请忽略啦XD 需要的朋友可以参考下
    2015-12-12

最新评论