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>