解决java.lang.IllegalArgumentException:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are requir
文章目录
- 1. 复现问题
- 2. 分析问题
- 2.1 检查是否引入了mybatis的jar包
- 2.2 检查启动类的配置
- 2.3 检查xml文件对应java类的配置是否有误
- 2.4 检查application.yml文件的mybatis配置是否有误
- 2.5 检查pon.xml文件
- 3. 解决问题
1. 复现问题
今天在测试如下代码时:
@SpringBootTest
class LowCodeApplicationTests {@Autowired private Userservice userservice;@Testvoid contextLoads() {List<User> users = userservice.queryByParam("测试");for (User user : users) {System.out.println(user);}}
}
报错如下错误:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userMapper' defined in file [D:\project\target\classes\com\cloud\lowcode\mapper\UserMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are requiredat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:602)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeanByName(AbstractAutowireCapableBeanFactory.java:461)at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:527)at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:497)at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:650)at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:228)at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119)at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:318)... 83 more
Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are requiredat org.springframework.util.Assert.notNull(Assert.java:201)at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:122)at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:73)at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1845)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782)... 96 more
即错误信息为:java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
。
2. 分析问题
将该错误信息翻译成中文为java.lang.IllegalArgumentException:属性“sqlSessionFactory”或“sqlSessionTemplate”是必需的
。
2.1 检查是否引入了mybatis的jar包
<properties><java.version>1.8</java.version><mybatisStarter.version>2.2.2</mybatisStarter.version><baomidouStarter.version>1.0.5</baomidouStarter.version><baomidouMybatisPlus.version>2.1.9</baomidouMybatisPlus.version>
</properties><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatisStarter.version}</version>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatisplus-spring-boot-starter</artifactId><version>${baomidouStarter.version}</version>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>${baomidouMybatisPlus.version}</version>
</dependency>
2.2 检查启动类的配置
检查启动类是否加上MapperScan
,如下已加上该注解:
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
@MapperScan("com.**.mapper")
public class LowCodeApplication {public static void main(String[] args) {SpringApplication.run(LowCodeApplication.class, args);}}
2.3 检查xml文件对应java类的配置是否有误
如下是userMapper.xml
配置信息:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cloud.lowcode.mapper.UserMapper"><select id="queryByParam" parameterType="string" resultType="com.cloud.lowcode.entity.po.User">SELECT * FROM `user`<where><if test="username != null || username.length > 0">name = #{username}</if></where></select>
</mapper>
再看对应的UserMapper.java
类,如下所示:
package com.cloud.lowcode.mapper;import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.cloud.lowcode.entity.po.User;
import org.apache.ibatis.annotations.Mapper;import java.util.List;/*** @author 念兮为美* @datetime 2022/11/28 13:51* @desc 用户实体类*/
@Mapper
public interface UserMapper extends BaseMapper<User> {List<User> queryByParam(String username);
}
userMapper.xml
和userMapper.java
对应如下:
userMapper.xml
和UserMapper.java
的名字一样(不包括后缀名)userMapper.xml
中的namespace
为com.cloud.lowcode.mapper.UserMapper
对应UserMapper.java
中的包名+类名,没问题userMapper.xml
中的id
为queryByParam
对应UserMapper.java
中的方法名,没问题userMapper.xml
中的参数类型parameterType
为string
对应UserMapper.java
中的queryByParam
字符串类型,没问题经检查
resultType
也没问题
2.4 检查application.yml文件的mybatis配置是否有误
如下是application.yml
配置的mybatis
信息:
#mybatis配置
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath*:/mapper/*Mapper.xmltype-aliases-package: com.cloud.lowcode.entity.po
该配置信息没有问题。
2.5 检查pon.xml文件
<build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.yml</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><filtering>true</filtering></resource></resources>
</build>
pom.xml
中已配置了resource
信息,也没有问题。
以上四种情况,都没有问题,那么,问题出现在哪里呢?
3. 解决问题
尝试删除启动类中的exclude={DataSourceAutoConfiguration.class}
,即修改成如下代码:
@SpringBootApplication
@MapperScan("com.**.mapper")
public class LowCodeApplication {public static void main(String[] args) {SpringApplication.run(LowCodeApplication.class, args);}}
重新启动测试类,便能成功运行,如下代码所示:
解决java.lang.IllegalArgumentException:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are requir相关推荐
- java.lang.IllegalArgumentException: Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are requir
SpringBoot项目启动报错 网上对于这个错误有好多的解决方案,找了好多文档都是不好使,最后竟然发现pom 文件缺少: 加入下方依赖即可(切记 加入依赖一定下要刷新下 pom 重新引入) < ...
- Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property
来来来,记录一下阿里云Maven中央仓库的坑,当然最主要还是自身pom.xml设置问题. 昨天项目启动还好好的,为什么今天项目一启动就报错了呢?(线上项目服务器没重启的话也是正常可以访问的,只要一重启 ...
- 解决 java.lang.IllegalArgumentException: Repository interface must not be null on initialization!
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 报错:Caused by: java.lang.IllegalArgumentException: ...
- 记一次解决java.lang.IllegalArgumentException: Invalid path: /storage/emulated/0问题
问题主要出现在以下代码中 static long getSDTotalSize(@NonNull Context context) {File path = Environment.getExtern ...
- 解决java.lang.IllegalArgumentException
1.控制台错误信息 严重: Servlet.service() for servlet [dispatcherServlet] in context with path [/web] threw ex ...
- 解决java.lang.IllegalArgumentException: Invalid column index (256). Allowable column range for BIFF8
在我们使用的jar包 <dependency> <groupId>org.jeecgframework</groupId> ...
- MyBatis-Plus Cause: java.lang.IllegalArgumentException: argument type mismatch解决
报错如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Re ...
- android java.lang.IllegalArgumentException: The observer is null.异常解决
android java.lang.IllegalArgumentException: The observer is null.异常解决 参考文章: (1)android java.lang.Ill ...
- java.lang.IllegalArgumentException: URLDecoder异常解决
异常: Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex ...
最新文章
- 《head first java 》读书笔记(四)
- 【开源项目】之智能鞋柜(STM32)
- 辞退了一名 2 年工作经验的前端工程师
- weiler-atherton多边形裁剪算法_EAST算法超详细源码解析:数据预处理与标签生成...
- UFLDL 教程学习笔记(三)自编码与稀疏性
- [非旋平衡树]fhq_treap概念及模板,例题:普通平衡树,文艺线段树
- shell下正则表达式与其工具grep
- 改进的EfficientNet-B4用于黑色素瘤检测
- Mysql 存储过程、存储函数 与 递归查询
- 2022-05-25 网络测试软件PingTools
- 华为光伏usb适配器_华为P40无线充电手机壳拆解:1款配件补上22.5W无线快充
- matlab画散点图
- MT7621路由器芯片/处理器参数介绍
- 写易班微信小程序遇到了一点问题
- eclipse使用install报No compiler is provided in this environment. Perhaps you are running on a JRE rathe
- itextpdf生成pdf,指定样式及文字水印
- Redis(设置失效时间,RedisDesktopManger远程管理工具)
- 微信公众号-- 微信分享功能(分享到朋友和朋友圈显示图片和简介)
- Linux之scp与sftp的使用
- 《炬丰科技-半导体工艺》 蓝宝石上的非极性氮化镓紫外光电探测器