浅谈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
猜你喜欢
- Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullP
- 从这章开始,会介绍几个常用的函数式接口工具,首先先来看下这个大家族:首先从Function接口开始介绍一. 概述该接口顾名思义,函数的意思,
- 1、代码设计的代理模式代理模式属于构建型模式(Proxy),提供了对目标对象的一种访问方式; 即通过代理对象访问目标对象。这样做的好处是:可
- 1.相关介绍@Conditional注解可以用在任何类型或者方法上面,通过@Conditional注解可以配置一些条件判断,当所有条件都满足
- 前段时间学习JDBC,要连接mysql获取数据。按照老师的样例数据,要存一些名字之类的信息,用的都是英文名,我当时就不太想用英文,就把我室友
- 目录一、什么是 RUNNABLE?二、与传统的ready状态的区别三、与传统的running状态的区别四、当I/O阻塞时五、如何看待RUNN
- bean 的生命周期对象创建实例化Bean对象,默认选择无参构造方法,如果只有一个有参构造那么调用有参构造,如果只有多个有参构造那么报错,除
- 一、Arthas官方文档https://arthas.aliyun.com/doc/二、springBoot整合方式1、pom文件引入<
- 只使用try和finally不使用catch的原因和场景JDK并发工具包中,很多异常处理都使用了如下的结构,如AbstractExecuto
- Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入
- SpringBoot项目经常将连接数据库的密码明文放在配置文件里,安全性就比较低一些,尤其在一些企业对安全性要求很高,因此我们就考虑如何对密
- Java内存区域与内存溢出异常概述对于 C 和 C++程序开发的开发人员来说,在内存管理领域,程序员对内存拥有绝对的使用权,但是也要主要到正
- 一、题目描述题目实现:使用网络编程时,需要通过Socket传递对象。二、解题思路创建一个类:Student,实现序列化Student类包含两
- Android 无障碍的全局悬浮窗可以在屏幕上添加 UI 供用户进行快捷操作,可以展示在所有应用程序之上长期展示。另一方面,在一些自动化场景
- spring boot ${}占位符不起作用问题:在 pom.xml 文件里定义好属性标签,然后在 properties或者xml 中使用$
- 说到人脸检测,首先要了解Haar特征分类器。Haar特征分类器说白了就是一个个的xml文件,不同的xml里面描述人体各个部位的特征值,比如人
- 第一部分 问题描述1.1 具体任务本次作业任务是轨迹压缩,给定一个GPS数据记录文件,每条记录包含经度和维度两个坐标字段,所有记录的经纬度坐
- 1、普通用户与系统管理员用户的权限要有严格的区分。如果一个普通用户在使用查询语句中嵌入另一个Drop Table语句,那么是否允许
- 一、加密方案介绍对接口的加密解密操作主要有下面两种方式:自定义消息转换器优势:仅需实现接口,配置简单。劣势:仅能对同一类型的MediaTyp
- 本文实例为大家分享了java实现双色球抽奖的具体代码,供大家参考,具体内容如下实现双色球先考虑整体思路:1.随机生成7位数的数组为大奖号码(