解决Spring boot整合mybatis,xml资源文件放置及路径配置问题
作者:babyyaoyao 发布时间:2021-07-07 12:27:20
网上各种解决方案,我试了好久,整合了几篇文章才凑出来,在这里分享一下,实在不想网友们在这里面绕圈子,毕竟,写代码的时间是愉快的,解决bug也是愉快的,但也是一直在bug里面绕圈子就不爽了。
亲自试验:
1) 我的mapper和xml是这样子放置的
2) 在.xml中namespace是这样的:
3) application.properties中mybatis.mapper-locations得这么配置到xml
4) 最后呢,你只要在pom.xml中build下这样配置
5) 按照我这种位置防止,把响应的包名换成自己的,就基本上不会没有什么问题的。
也不用去加什么*Application中去加什么注解@MapperScan(value = "com.acme.shop.mapper")什么的了,不需要呢。
补充知识:mybatis-plus的 mapper.xml 路径配置的坑
问题:
在SpringBoot整合MyBatis时,若mapper映射文件在java路径下,就会一直报错Invalid bound statement (not found): xxx.xxxMapper.selectxx
说明Mapper接口是可以调用到的,问题就出在无法映射到Mapper.xml文件。
同时查看输出target目录下,没有xxxmapper.xml文件的编译结果。
原因:
SpringBoot默认配置情况下,只有resources路径下的xml文件会被扫描。
解决办法:
方法一:【推荐使用】
将mapper映射文件放在resources目录下,通常会在resources目录下建一个mapper目录,存放各种mapper的映射文件,
并且在application.properties中配置 Mapper映射文件的路径为:
#指定myBatis的核心配置文件与Mapper映射文件
mybatis.mapper-locations=classpath:mapper/*.xml
测试成功,查看target目录下,有xxxMapper.xml文件的编译结果。
方法二:
mapper映射文件依旧放在java目录下,
此时,需要在pom.xml文件中添加java路径下xml文件扫描配置,
<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/java</directory>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
</resources>
</build>
并且在application.properties中配置 Mapper映射文件的路径时要加上包名,
#mybatis.mapper-locations=classpath:包名/*.xml
mybatis.mapper-locations=classpath:org.xiao.dao/*.xml
测试成功,查看target目录下,有xxxMapper.xml文件的编译结果。
来源:https://blog.csdn.net/babyyaoyao/article/details/81096923


猜你喜欢
- 背景在我们实际生产容器化部署过程中,往往会遇到 Docker 镜像很大,部署发布很慢的情况影响 docker 镜像大小的因素,主要有以下三个
- 基于有了OO的基础后,开始认真学习设计模式!设计模式是java设计中必不可少的!Apple.javapackage strategy;/**
- 这篇文章主要讲解C#中的泛型,泛型在C#中有很重要的地位,尤其是在搭建项目框架的时候。一、什么是泛型泛型是C#2.0推出的新语法,不是语法糖
- 一、算法描述波雷费密码是一种对称式密码,是首种双字母取代的加密法。下面描述算法步骤:1、从1号二维码M05,提取明文信息和密文,M05格式:
- 1、String类1.1两种对象实例化方式对于String在之前已经学习过了基本使用,就是表示字符串,那么当时使用的形式采取了直接赋值:pu
- 定义:简单绑定是将一个用户界面元素(控件)的属性绑定到一个类型(对象)实例上的某个属性的方法。基本类型、包装类型、数组(以参数a
- 对象内存分配与回收策略对象的内存分配,往大方向讲,就是在堆上分配〔但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),对象主要分配在
- 在开发过程中.数组和集合的处理是最让我们担心.一般会用for or foreach 来处理一些操作.这里介绍一些常用的集合跟数组的操作函数.
- 一、之前旧的写法class Singleton{ private Singleton() {} &nb
- 推荐激活教程IntelliJ IDEA 2020最新激活码(亲测有效,可激活至 2089 年)最新idea2021注册码永久激活(激活到21
- 最近做了一个MyEclipse项目,但是没开始多久就发现了这个问题:只要文件被修改过,不论多小的修改,保存的时候都会跳出一个框框,里面写着t
- 如下所示:public static void main(String[] args) throws IOException {  
- 如下所示:/** * 读写权限 自己可以添加需要判断的权限 */public static String[]permissionsREAD=
- 一.什么是泛型当我们不确定数据类型时,我们可以暂时使用一个字母 T代替数据类型。例如写一个方法,但是我们不知道它是传递的是什么数据类型,我们
- 本文实例讲述了Java实现的模糊匹配某文件夹下的文件并删除功能。分享给大家供大家参考,具体如下:package com.wyebd.gis;
- 什么是冒泡排序冒泡排序指重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从小到大)错误就把他们交换过来。走访元素的工作是重复
- 1. 前言老板说,明天甲方要来看产品,你得造点数据,而且数据必须是“真”的,演示效果要好看一些,这样他才会买我们的产品,我好明年给你换个嫂子
- 前言这篇文章探索一下springboot的tomcat是如何实现的一、起步依赖1.首先我们了解一下起步依赖SpringBoot结合Maven
- Crypto 库是C/C++的加密算法库,这个加密库很流行,基本上涵盖了市面上的各类加密解密算法,以下代码是我在学习是总结的,放到这里用于后
- 文件资源操作Spring 定义了一个 org.springframework.core.io.Resource 接口,Resource 接口