文章目录

  • 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.xmluserMapper.java对应如下:

  • userMapper.xmlUserMapper.java的名字一样(不包括后缀名)

  • userMapper.xml中的namespacecom.cloud.lowcode.mapper.UserMapper对应UserMapper.java中的包名+类名,没问题

  • userMapper.xml中的idqueryByParam对应UserMapper.java中的方法名,没问题

  • userMapper.xml中的参数类型parameterTypestring对应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相关推荐

  1. java.lang.IllegalArgumentException: Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are requir

    SpringBoot项目启动报错 网上对于这个错误有好多的解决方案,找了好多文档都是不好使,最后竟然发现pom 文件缺少: 加入下方依赖即可(切记 加入依赖一定下要刷新下 pom  重新引入) < ...

  2. Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property

    来来来,记录一下阿里云Maven中央仓库的坑,当然最主要还是自身pom.xml设置问题. 昨天项目启动还好好的,为什么今天项目一启动就报错了呢?(线上项目服务器没重启的话也是正常可以访问的,只要一重启 ...

  3. 解决 java.lang.IllegalArgumentException: Repository interface must not be null on initialization!

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 报错:Caused by: java.lang.IllegalArgumentException: ...

  4. 记一次解决java.lang.IllegalArgumentException: Invalid path: /storage/emulated/0问题

    问题主要出现在以下代码中 static long getSDTotalSize(@NonNull Context context) {File path = Environment.getExtern ...

  5. 解决java.lang.IllegalArgumentException

    1.控制台错误信息 严重: Servlet.service() for servlet [dispatcherServlet] in context with path [/web] threw ex ...

  6. 解决java.lang.IllegalArgumentException: Invalid column index (256). Allowable column range for BIFF8

    在我们使用的jar包 <dependency>             <groupId>org.jeecgframework</groupId>         ...

  7. MyBatis-Plus Cause: java.lang.IllegalArgumentException: argument type mismatch解决

    报错如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Re ...

  8. android java.lang.IllegalArgumentException: The observer is null.异常解决

    android java.lang.IllegalArgumentException: The observer is null.异常解决 参考文章: (1)android java.lang.Ill ...

  9. java.lang.IllegalArgumentException: URLDecoder异常解决

    异常: Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex ...

最新文章

  1. 《head first java 》读书笔记(四)
  2. 【开源项目】之智能鞋柜(STM32)
  3. 辞退了一名 2 年工作经验的前端工程师
  4. weiler-atherton多边形裁剪算法_EAST算法超详细源码解析:数据预处理与标签生成...
  5. UFLDL 教程学习笔记(三)自编码与稀疏性
  6. [非旋平衡树]fhq_treap概念及模板,例题:普通平衡树,文艺线段树
  7. shell下正则表达式与其工具grep
  8. 改进的EfficientNet-B4用于黑色素瘤检测
  9. Mysql 存储过程、存储函数 与 递归查询
  10. 2022-05-25 网络测试软件PingTools
  11. 华为光伏usb适配器_华为P40无线充电手机壳拆解:1款配件补上22.5W无线快充
  12. matlab画散点图
  13. MT7621路由器芯片/处理器参数介绍
  14. 写易班微信小程序遇到了一点问题
  15. eclipse使用install报No compiler is provided in this environment. Perhaps you are running on a JRE rathe
  16. itextpdf生成pdf,指定样式及文字水印
  17. Redis(设置失效时间,RedisDesktopManger远程管理工具)
  18. 微信公众号-- 微信分享功能(分享到朋友和朋友圈显示图片和简介)
  19. Linux之scp与sftp的使用
  20. 《炬丰科技-半导体工艺》 蓝宝石上的非极性氮化镓紫外光电探测器

热门文章

  1. 中兴c300业务板_中兴OLT C300板卡添加
  2. 元宇宙是骗局,还是人类的未来?
  3. 《数据结构》11-散列1 电话聊天狂人
  4. PubMed数据下载
  5. 树莓派安装部署OpenVINO
  6. bzoj-1031 字符加密Cipher
  7. android 电量控制
  8. 嵌入式系统的知识体系
  9. Objective-C 2.0 Morden Runtime
  10. win32 api简易实现ftp文件上传