SpringBoot踩坑记录 Invalid bound statement (not found)引发的一些列问题

SpringBoot踩坑记录

Invalid bound statement (not found)引发的一些列问题

当你开开心心搭建了一个SpringBoot项目,用插件生成了entity、dao、mapper,写下第一个Controller准备试一下,结果却发现一条简单的查询报错了。

{"timestamp": "2019-03-18 16:21:48","status": 500,"error": "Internal Server Error","message": "Invalid bound statement (not found): com.xxx.dao.UserMapper.selectByPrimaryKey","path": "/test"}

经过排查,发现target/classes/包名目录下不存在mapper文件夹,一个令人伤心的事情。

​ 于是我们知道了关键所在,怎么把mapper下的xml文件打包进去。通过查阅资料,我们知道了解决这个问题通常有两个思路:

1.将mapper放在src/main/resource 目录下,这个目录下默认是会打包进去的。

2.在pom文件的

<build></build>

节点内,添加一段

<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><!-- 是否替换资源中的属性--><filtering>false</filtering></resource>
</resources>

3.当你打包时,手动把xml文件所在的mapper文件夹丢进target/classes/包名/目录下。需要丢一次+运行一次就好了

以上3种方法我只试过下面两种,上面那种虽然没有确切放过xml文件,但是其他类文件的存放以及打包倒是用过,这个后面再说。

现在来确切说说第二种。这里是有坑的

坑.1 配置过度导致捡了芝麻丢了西瓜

img

比如,会在别处看到一些这样的配置。实际上src/main/resources下的文件都会被打包,如果把图中那段注释解开,你会发现除了xml和properties文件,其他东西都没打包进去(如果你使用的是yml配置,那么yml也不会被打包进去),图中的这位博主估计也是发现了这段代码的弊大于利。

这里就牵扯出一个问题了。如果我的项目中resource下只有xml,和properties文件,这段配置也无伤大雅咯?是的,的确是这样,templates和static下似乎是能打包进去的。

在解决了xml打包之后,我们迫不及待的继续打包运行,发现依旧是那个报错,emmmmmmm,这让人不禁有些头大。翻开前辈的项目,发现了在yml下,还配置了mybatis

mybatis:mapper-locations: classpath:com/xx/xxx/mapper/**/*.xmltype-aliases-package: com.xx.xxx.entityconfiguration:cache-enabled: false

坑.2 Mybatis路径配置须小心

当看到路径里mapper/**/*.xml时,不知怎么的,我就自作聪明把mapper给删掉了,/**/*.xml,看似是指向下一级目录的xml文件,但是当你自作聪明的删掉了这里之后,你会发现xml虽然打包进去了,但是你的dao依然找不到mapper,还是报错。

血的教训啊,童鞋们切记这个路径是:包名/xml所在目录/**/*.xml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux检查wlan0是否存在,linux - airmon-ng将wlan0更改为wlan0mon但不恢复[​​关闭] - 堆栈内存溢出...

我有同样的问题关闭wlan0mon(但在Kali Linux&#xff0c;而不是Ubuntu)&#xff0c;我相信我的一位同事因此而锁定了几个适配器。 但是&#xff0c;从2016年4月14日开始&#xff0c;Colin在2016年4月14日的优秀答案中纠正了我的硬件问题(ALFA AWUS036NHA)&#xff0c;而无需两次…

Java中switch参数传null会引起异常——Java 语法糖

问题 switch 参数不能是null&#xff0c;swicth(null)会报java.lang.NullPointerException异常 查找原因 为什么会这样呢&#xff0c;查找一下原因&#xff1a; 找到编译后的class文件&#xff0c;就明白了 总结&#xff1a; switch 是一个语法糖。switch语句是先计算 par…

linux head命令作用,Linux查看文件内容之head命令

1. head命令简介本文主要介绍head命令的作用与常用使用方法&#xff0c;该命令和tail命令相反&#xff0c;head默认显示用来显示文本开头&#xff0c;而tail默认显示结尾某个数量的文字区块。2. head命令选项-q 隐藏文件名-v 显示文件名-c 显示字节数-n 显示的行数3. 常见使用方…

java.util.concurrent.TimeUnit

JavaAPI&#xff1a;https://docs.oracle.com/javase/8/docs/api/index.html 1 TimeUnit api&#xff1a;https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html TimeUnit是java.util.concurrent包下面的一个类&#xff1b;TimeUnit 是Java枚举应用场…

c语言数组宏定义标识符,C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针...

目录预编译值传递、指针传递、引用传递数组typedef 函数指针预编译预编译又叫预处理。预编译不是编译&#xff0c;而是编译前的处理。这个操作是在正式编译之前由系统自动完成的。#define 和 #include 一样&#xff0c;都是以“#”开头的。凡是以“#”开头的均为预处理指令。#d…

凑钱系统C语言,C语言课程设计报告书凑钱程序.doc

C语言课程设计报告书凑钱程序西北师范大学知行学院计算机与电子信息工程系课程设计报告书课程名称: C语言程序设计专 业: 电子信息工程课题名称: 凑钱程序班 级: 13电本班学 号: 201392170114姓 名&#xff1a; 秦波指导教师: 柴西林二○一三 ——二○一四 学年 第一学期基于C语…

SpringBoot使用jasypt加解密密码

在我们的服务中不可避免的需要使用到一些秘钥&#xff08;数据库、redis等&#xff09;&#xff1b;使用过SpringBoot配置文件的朋友都知道&#xff0c;资源文件中的内容通常情况下是明文显示&#xff0c;安全性就比较低一些。打开application.properties或application.yml&…

android 写字体投影,android-给字体设置投影

1&#xff0c;在代码中添加文字阴影TextView 有一个方法/*** Gives the text a shadow of the specified radius and color, the specified* distance from its normal position.** attr ref android.R.styleable#TextView_shadowColor* attr ref android.R.styleable#TextView…

Java包装类中的equals方法

基本数据类型包装类中的equals方法用于比对相同包装类中的值是否相等&#xff0c;如果两者比较的包装类类型不同则返回false&#xff1b; 1、基本型和基本型封装型进行“”运算符的比较&#xff0c;基本型封装型将会自动拆箱变为基本型后再进行比较&#xff0c; 2.两个包裝类型…

android 开源图表动画,Android 图表开发开源库MPAndroidChart-Go语言中文社区

上面是APP中实现的效果图(点击可以放大查看)图1的效果不是用这个实现的&#xff0c;如果感兴趣可以参考我这篇文章 Android渐变圆环总体来说&#xff0c;MPAndroidChart可能是目前Android 开发最好用的一个三方库了&#xff0c;功能非常强大&#xff0c;集成简单。直接导入作为…

电脑开启防火墙后ping不通 及 开启防火墙后,不能远程的解决办法

有些情况下电脑需要开防火墙但是又希望能被远程或者ping通。 一、先查看电脑的网络类型&#xff08;第二步中打开对应网络类型下的协议&#xff09; 二、控制面板 - Windows防火墙 - 高级设置-入站规则 &#xff08;1&#xff09;开启防火墙后&#xff0c;能ping通设置。 &…

android 时间应用程序,Android在首次启动时需要更多时间启动应用程序

在我的项目中&#xff0c;我使用了需要multidex支持的库。 根据我的研究&#xff0c;我发现它会导致应用启动时出现延迟。我在gradle中启用了multidexfunction。 defaultConfig {multiDexEnabled true}我曾经为kitkat设备获得NoClassDefFound Exception&#xff0c;所以我添加了…

Mysql中用between...and...查询日期时注意事项

select count(1) from user where regist_date between 2017-07-25 00:00:00 and 2017-07-25 24:00:00;这条sql语句查询出结果为0。实际上数据库有一条符合该查询条件的数据。 错误原因&#xff1a;2017-07-25 24:00:00 晚上24点即为下一天00点 2017-07-26 00:00:00&#xff0…

android core log,Android 日志系统(Logcat)的实现分析

这篇说一下Android 日志系统的实现&#xff1a;1. Android中的打印分为4个缓冲区和6个打印等级&#xff0c;在frameworks\base\core\java\android\util\Log.java中有定义&#xff1a;四缓冲&#xff1a;public static final int LOG_ID_MAIN 0;public static final int LOG_ID…

Java接口的几种常见用法

接口&#xff08;interface&#xff09;对于面向对象编程来说是一个非常重要的概念。它是一系列方法的声明&#xff0c;却没有具体实现。有些编程语言&#xff0c;比如swift&#xff0c;把接口解释成“协议&#xff08;protocol&#xff09;”&#xff0c;我觉得也是非常的恰当…

android矢量图 内存大,Android内存控制小技巧-使用矢量图来节省你的内存并简化你的开发。...

先上一个 位图和矢量图的 说明。外链网址已屏蔽维基百科里面有更详细的说明 我就不贴地址了。简单来说就是位图 比 矢量图要大。但是位图可以适用于各种场景。但是矢量图就只能显示一些有规律的图形。复杂的做不了或者是很难做。对于android来说&#xff0c;我们一般app里面 会…

linux下利用nohup后台运行jar文件包程序

Linux 运行jar包命令如下&#xff1a; 方式一&#xff1a; java -jar XXX.jar 特点&#xff1a;当前ssh窗口被锁定&#xff0c;可按CTRL C打断程序运行&#xff0c;或直接关闭窗口&#xff0c;程序退出 那如何让窗口不锁定&#xff1f; 方式二 java -jar XXX.jar & &am…

idea 快捷键代码行标记并快捷跳到标记行

idea有一个组合快捷键 标记代码行&#xff08;左边的行数会出现一个1&#xff0c;代表着已经标记了&#xff09; ctrlshift1 迅速跳到标记行 ctrl1 这边给大家送上显示GIF

android十进制转十六进制算法,十进制转十六进制 代码

5621转换为16进制数的方法是“除16取余”方法&#xff0c;5621/16&#xff1d;商351余5&#xff0c;16进制最后一位为5351/16&#xff1d;商21余15&#xff0c;16进制右边第二位为F21/16&#xff1d;商1余5&#xff0c;16进制右边第三位为51/16&#xff1d;商0余1&#xff0c;1…

鸿蒙之火是什么意思,鸿蒙突然火了!鸿蒙是什么?

原标题&#xff1a;"鸿蒙"突然火了&#xff01;"鸿蒙"是什么&#xff1f;什么是鸿蒙&#xff1f;鸿蒙是什么&#xff1f;很多人都在发问&#xff0c;仿佛一夜之间就火了的鸿蒙有何独特之处&#xff1f;鸿蒙是真的来了。鸿蒙是文化&#xff0c;鸿蒙也是科技…