SSMBUG汇总

1. 通用,驼峰命名法,mybatis。

20240103

mybatis入门程序中,

 // 获取对象的顺序为:SqlSessionFactoryBuild-》SqlSessionFactory-》SqlSession
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");//mybatis核心配置文件的路径

        SqlSessionFactory sqlSessionFactory = SqlSessionFactoryBuilder.build(inputStream);`

build爆红,其实很简单,方法和变量遵循驼峰命名法,应为sqlSessionFactoryBuilder.

其中,SqlSessionFactoryBuilder是一个类名,故每个单词首字母大写,sqlSessionFactoryBuilder是一个实例对象(也即变量,故应当驼峰命名)

2. pom文件加载Spring6.0.0和junit依赖爆红

20240104

****–解决办法:挂全局代理后刷新项目,让idea再次下载

pom文件加载Spring6.0.0和junit依赖爆红-错误做法:maven的setting.xml中增加了一个阿里云镜像,但是报错Error reading file pom.xml
问题:插入镜像代码时嵌套错误了:

<mirror>
<mirror>
    <id>nexus-aliyun</id>

    <mirrorOf>central</mirrorOf>

    <name>Nexus aliyun</name>

    <url>http://maven.aliyun.com/nexus/content/groups/public</url>

</mirror>

一个低级错误,setting.xml文件错误会导致整个pom文件读取失败.
但是,在setting.xml中添加镜像这个做法是没毛病的.

3 启动log4j2报错,

ERROR StatusLogger Log4j2 could not find a logging implementation.
启动log4j2报错,比对正常运行log4j2的maven依赖
在这里插入图片描述
显然,少了一个impl包,解决办法:确保pom中写了两个依赖.

4. 引入logback依赖后执行代码,报错(maven依赖作用域问题)

Error building SqlSession.The error may exist in SQL Mapper Configuration
Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.logging.LogException: Error setting Log implementation. Cause: java.lang.reflect.InvocationTargetException
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)

原因:
在pom.xml中,导入的logback是这么写的:
    <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.11</version>
    <!-- 这个语句说明本依赖仅在test包中使用Junit测试时生效,而本次运行并没有使用单元测试,是直接在src目录下运行,故系统检测不要依赖-->
    <scope>test</scope>
</dependency>

解决办法:1.在test包中做测试。 2。注释掉scope子标签。


5. mybatis 不能解析资源文件xxxMapper.xml

20240114

不能解析UserMapper.xml文件
之前,直接把xxxMapper.xml文件丢在Resources目录下

然而真实项目中xxxMapper.xml文件非常多, 故从Resources目录下新建了一个目录mappers,所有的xxxmapper.xml都放到这个目录下:
在这里插入图片描述

<!--但mybatis-config.xml文件中,依然写成<mapper resource="UserMapper.xml"/>
    框架并不会递归搜索目录, 应手动指定, 故改成-->
        <mapper resource="mappers/UserMapper.xml"/>

6 SpringBoot整合Druid查询时出错

20240117

报500 , 故应该不是路径问题 , 要从代码内部找原因

总之就是进不去 , 最后发现是Controller层代码的查询语句中 , 表名写错了

7 SB整合MP不能加载上下文

20240205

报错: java.lang.IllegalStateException: Failed to load ApplicationContext for

排错方法, 对比正常运行的模块和不正常运行的模块, 最终问题锁定到SB的依赖版本

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.8</version>
    </parent>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>

采用parent继承的方式初始化SB项目的好处是SB自己的依赖版本都不用导, parent会自动匹配所有合适的. 例如

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

但第三方的SB依赖就需要手工导入了, 因此存在版本不匹配的问题

在mvn仓库中搜索可见,
SB的3.1.8是2024年发布的版本
MPboot starter的2.5.3.1是2022年发布的版本,当下考虑是否不兼容, 更换版本后果然可以.
两个更换方式, 一种是升级MPboot starter, 一种是降级SB, 让二者版本匹配

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.5</version>
    </parent>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.8</version>
    </parent>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.5</version>
        </dependency>
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值