SpringBoot+MyBatis整合中的坑以及Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required错误详解

2022-08-11 21:37:23 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

今天想重新学习一下之前大学学过的Springboot框架。然后参考此篇文章进行学习,https://blog.csdn.net/saytime/article/details/74783296 使用Spring Tool Suit的开发工具。整个项目架构如下图所示。然后开始遇到各种坑,特此记下来,以免以后犯同样的错误。

坑一:在Mapper层,它是需要加@Mapper注解的,但是网上又有人加@respository,两个注解混起来了,其实是任选其一都可以的。一般都是使用@Mapper。但是如果在Mapper层中加了注解,在配置主类SpringBootMybatisApplication里面就不需要@MapperScan(“com.example.demo.mapper”)扫描注解,在配置类里加扫描注解的意思是将这个包下所有的都注解成Mapper。

坑二:使用STS创建的SpringBoot项目,其中配置文件默认的是application.properties,一般在这个文件里面配置数据源。但是这个文件想要起作用,则必须在配置主类中加入@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})自动注入,否则该配置文件中的配置无效。会报出Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.错误

但是此时如果加了这个注解,由于Mybatis的依赖中的jar包, < dependency> < groupId>org.mybatis.spring.boot< /groupId> < artifactId>mybatis-spring-boot-starter< /artifactId> < version>1.3.2</ version> < /dependency> mybatis-spring-1.3.2中取消了自动注入SqlSessionFactory 和 SqlSessionTemplate,所以会报出Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required错误。 那得想解决办法啊,于是网上搜解决办法,参考此文, 创建了一个基类,然后让自己的dao去继承。https://www.cnblogs.com/hawk0035/p/3337283.html?utm_source=tuicool 但是我的Mapper层是使用了注解版Mybatis,是一个接口,不能继承类。所以这个办法就不能用了。 既然mybatis-spring-1.3.2中取消了自动注入,那我就换成低版本的mybatis-spring-1.1.1,但是事实还是一样,没有任何改变。中途由于maven仓库换mybatis-spring版本,我以为是相关JAR包没下载完成,所以又把jar包删了重新下,又浪费了很多时间。。。 那就想办法不要@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})自动注入,所以必须把application.properties配置文件改为application.yml。问题终于解决了。

坑三:由于我配置文件中加了Mongodb的依赖,导致运行的时候还报了错。删除之后就OK了。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131414.html原文链接:https://javaforall.cn

0 人点赞