浅谈Springboot下引入mybatis遇到的坑点
作者:Hester_WJ 发布时间:2023-09-09 05:55:09
一、 springBoot + Mybatis
配置完成后,访问数据库遇到的问题
首先出现这个问题,肯定是xml文件与mapper接口没有匹配上,甚至是xml文件根本没有被扫描到。
于是会从配置上进行检查:
1、 xml中的namespace命名是否与mapper接口路径一致,需保证一致。
2、 application.properties或者application.yml文件中配置mybatis的属性对否,如下:
第一行 typeAliasesPackage是实体类的包路径;
第二行mapperLocations:是Mapper的xml文件存放的位置,当xml文件跟对应的Mapper接口处于同一位置的时候可以不用指定
该属性的值。
3、 启动类上加注解,如下:
推荐用这种方式扫描Mapper接口,另一种方式是在每一个mapper接口类上加注解
注意,上述两种方式,必须有一种实现,不然无法启动项目,会报mapper接口未注入,如下:
综上,只要上面几种情况都配置正确,一般就可以正常启动,并访问数据库。
二、 springBoot + MybatisPlus
pom中需要修改包
我用同样的原理,准备在springBoot中引入mybatisPlus,但是配置都检查了,依旧报类似的错误:
于是根据报错的信息,究其源码:
1、 首先由于mybatis通过mapper接口来invoke具体的方法实现,其查询的key是接口包名加方法名,如果找不到该key,就会报错,具体代码如下:
只有在configuration中找到了匹配的key,才会返回key对应的MappedStatement; 同样调用selectById,可看到一下结果,能够找到。很明显而由于上面的selectById1方法是自定义实现的,其xml未被扫描到,还是配置的问题。
然后,再看源码,为何configuration中找不到自定义的mapper方法,配置哪里有问题:
MybatisPlusAutoConfiguration是在启动时,自动会读取配置信息的,可以看到其中MybatisPlusProperties类型定义了前缀mybatis-plus,即只有前缀为mybatis-plus的配置信息才会被加载,而再看配置文件,如下,恍然大悟,mybatis的配置前缀写错了,修改成mybatis-plus,成功了!!!
后来发现,原来这跟开头pom文件中导入的包版本有关系,
总结如下:
若使用的是mybatis,则要导入的包是下面这个,并且配置文件中mybatis的配置前缀是“mybatis”。
而若使用的是mybatis-plus,则需要导入的包是下图,并且配置中mybatis的配置前缀是“mybatis-plus”。
来源:https://blog.csdn.net/wangjie123end/article/details/81635380


猜你喜欢
- 本文实例为大家分享了UnityShader实现运动模糊的具体代码,供大家参考,具体内容如下1.此代码挂在摄像机上,使摄像机运动起来using
- 本文实例讲述了Android编程防止进程被第三方软件杀死的方法。分享给大家供大家参考,具体如下:项目测试的时候发现,按home键回到桌面,再
- 本文实例为大家分享了Android自定义View实现拖动自动吸边的具体代码,供大家参考,具体内容如下自定义View,一是为了满足设计需求,二
- /// <summary> /// 实体转换辅助类 /// </summary> public class Mode
- C#编写的简单数字图像处理程序,数字图像处理的平时成绩和编程作业竟然占50%,那就把最近做的事写个札记吧。先放个最终做成提交的效果看看:1.
- 使用System.Threading.Thread类可以创建和控制线程。常用的构造函数有: // 摘要: // 初
- 最近学习Spring,一直不太明白Srping的切面编程中的的argNames的含义,经过学习研究后,终于明白,分享一下需要监控的类:pac
- ViewFlipper实现文字轮播(仿淘宝头条垂直滚动广告),供大家参考,具体内容如下广告条目可以单独写成布局文件,然后在布局文件或者代码中
- 一、组件型注解:1、@Component 在类定义之前添加@Component注解,他会被spring容器识别,并转为bean。2、@Rep
- 1. 介绍结合上面的ReentrantLock类图,ReentrantLock实现了Lock接口,它的内部类Sync继承自AQS,绝大部分使
- 1.背景Java语言相比于C和C++,一个最大的特点就是不需要程序员自己手动去申请和释放内存,这一切交由JVM来完成。在Java中,运行时的
- 一、前言使用动态配置的原因: properties 和 yaml 是写到项目中的,好多时候有些配置需要修改,每次修改就要重新启动项目,不仅增
- import java.util.Arrays;/** * 栈的实现<br> * @author Skip&
- 一、树的概念和结构1.1 树的概念树是一种非线性的数据结构,它是由 n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因
- 今天老师留的作业,使用俩个Fragment来实现3D翻转效果,遇到了一点点的问题,于是在网上进行了查找,但是发现有些博主的代码不正确,对其他
- 本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下1.学生管理系统(控制台界面实现)//学生类,继承Seria
- 通过URL来获取网络资源并下载资源简单实例:package com.android.xiong.urltest; import java.i
- 随着现在分布式架构越来越盛行,在很多场景下需要使用到分布式锁。很多小伙伴对于分布式锁还不是特别了解,所以特地总结了一篇文章,让大家一文读懂分
- 因为最近重新看了泛型,又看了些反射,导致我对Object、T(以下代指泛型)、?产生了疑惑。我们先来试着理解一下Object类,学习Java
- 之前调用 WebService 都是直接添加服务引用,然后调用 WebService 方法的,最近发现还可以使用 Http 请求调用 Web