【Spring Boot】网页五子棋项目中遇到的困难及解决方法

news/2025/2/19 2:32:23/
目录
    • 一、HikariPool-1 - Starting异常
    • 二、Invalid bound statement (not found)异常
    • 三、The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary异常
    • 四、The server time zone value时区报错异常
    • 五、补充知识点:component注入的默认单例

问题现象:数据库连接正常,但是返回数据为空,并出现以下日值,但是多试几次又能查询数据库了,那时候没注意到日志中的没出现sql的查询字段以为是HikariPool-1 - Starting…1搞得鬼就上网去查,发现依然没有结果返回,然后把日志全看了一遍,压根就没有出现数据库连接的字段,我就知道应该是数据库连接出问题了,然后通过test测试数据库连接,结果爆红显示Invalid bound statement (not found)springboot错误,又上网去查,一一对比以后发现我的数据库映射并没有问题,然后提示我文件可能被过滤掉了等一系列问题…

一、HikariPool-1 - Starting异常

问题描述:

服务启动正常,但是使用功能要访问数据库时,控制台出现如下情况,一直 Startingcom.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting…1

问题排查
通过客户端连接数据库,访问正常。

网上搜索说是加个 useSSL=false ,但是还是不行。

url: jdbc:mysql://127.0.0.1:3306/java_gobang?characterEncoding=utf8&useSSL=false

然后也让我学习到了SSL(Secure Sockets Layer),安全套接字协议。在连接Mysql时,
如果MySQL的版本为5.7以上时,必须加上useSSL=false,直接通过用户账号和密码进行连接MySQL数据库;当MySQL的版本是5.7以下则不进行要求,默认使用useSSL=false。

useSSL=false:使用用户账号密码进行连接。

useSSL=true:y一般通过证书或者令牌进行安全验证。
不在yml配置中添加就默认的为true,则无法连接数据库成功。

二、Invalid bound statement (not found)异常

Invalid bound statement (not found)springboot或者Mybatis下找不到的几种情况

相信我们在学习Mybatis的时候都出现过 Invalid bound statement (not found) 这个错误,一般由以下几种可能导致这个错误

  1. 一:mapper方法名 和 mapper.xml id名不对应

在这里插入图片描述

  1. 二、 mapper.xml的namespace是不是写错了

这里的 namespace要写所需实现的接口的全限定性类名
在这里插入图片描述

  1. 三、是不是xml文件没有编译

打开target看看有没有xml文件在里面

没有的话就需要在pom.xml里面配置一下resource

在这里插入图片描述

<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.*</include></includes><filtering>true</filtering></resource>
</resources>
  1. 四、是不是resources的路径问题

主要,如果想吧mapper.xml文件写在resources下的话,新建的包要用 “ / ” 分开 而不是用 “ . ”

如:com/zhp/mapper 这个是正确的 com.zhp.mapper是错误的,查看一下包名对不对:

一定得是这样的嵌套的,以下是错误示例:(创建时候用错误的用 . 而不是 / )

还有,这个resources里的这个mapper包一定和src一样,以免出现不必要的错误

在这里插入图片描述

三、The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary异常

报错信息

Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

在这里插入图片描述

问题原因
升级后的mysql驱动类,Driver位置由com.mysql.jdbc.Driver 变为com.mysql.cj.jdbc.Driver

后来又查了一下这两个的区别,前者是jdbc连接mysql数据库的时候,如果连接mysql-connector-java 5使用的driver是com.mysql.jdbc.Driver,连接mysql-connector-java 6 以上使用的是com.mysql.cj.jdbc.Driver,然后看了之前的旧代码,新旧代码用的都是带cj的,但是不同的旧代码中的mysql-connector-java 依赖是8版本,然而新拉的项目分支中的是5版本,这样一下子就豁然开通了

解决方法:
只需要将applicaton.yml配置文件中 的com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver即可

四、The server time zone value时区报错异常

控制台报错信息:
java.sql.SQLException: The server time zone value ‘?й???’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time

时区报错,主要是两地时间不一样,我们在东八区

解决方法:

 url: jdbc:mysql://127.0.0.1:3306/java_gobangcharacterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8

五、补充知识点:component注入的默认单例

在这里插入图片描述

在这里插入图片描述

因为我在model类中想要自动注入其他包的类以及ObjectMapper类,然后就把model的这个实体类给注入到了spring当中,在运行程序时报错异常,然后一直在方法逻辑内找,是不是那个类在前后端交互时没有初始化或者传参,捋了一遍逻辑发现并没有问题,然后上网说是注入的问题,我又开始深挖Spring注入的相关内容,最后学习到了,model类一般用于类的构建,应该是多列模式的,使用Component注入之后,spring 默认注入对象为单例的,在我们进行拿去时就会出现报错NullPointerException
空指针异常总结:
如果想要在实体类(model类不能使用component)中使用Spring的注入方法,有两种解决方法

通过手动获取bean创建出来实例
在这里插入图片描述

然后对于想要注入的对象,首先从Spring启动类中拿到Spring 的上下文,我这里定义的是context,然后通过获取Bean的方式来进行创建我们想要的对象类。

在这里插入图片描述


http://www.ppmy.cn/news/1573249.html

相关文章

deepseek:三个月备考高级系统架构师

一、备考总体规划&#xff08;2025年2月11日 - 2025年5月&#xff09; 1. 第一阶段&#xff1a;基础夯实&#xff08;2025年2月11日 - 2025年3月10日&#xff09; 目标&#xff1a;快速掌握系统架构师考试的核心知识点。 重点内容&#xff1a; 计算机组成原理、操作系统、数据…

12、《Spring Data JPA:极简数据库操作实战》

《Spring Data JPA&#xff1a;极简数据库操作实战》 开篇&#xff1a;为什么需要Spring Data JPA&#xff1f; 在Java企业级开发中&#xff0c;数据库操作往往是业务代码的核心&#xff0c;但传统的JDBC或ORM框架&#xff08;如MyBatis&#xff09;需要开发者编写大量模板化…

DeepSeek-R1 蒸馏 Qwen 和 Llama 架构 企业级RAG知识库

“DeepSeek-R1的输出&#xff0c;蒸馏了6个小模型”意思是利用DeepSeek-R1这个大模型的输出结果&#xff0c;通过知识蒸馏技术训练出6个参数规模较小的模型&#xff0c;以下是具体解释&#xff1a; - **知识蒸馏技术原理**&#xff1a;知识蒸馏是一种模型压缩技术&#xff0c;核…

Python 基础-使用dict和set

dict Python内置了字典&#xff1a;dict的支持&#xff0c;dict全称dictionary&#xff0c;在其他语言中也称为map&#xff0c;使用键-值&#xff08;key-value&#xff09;存储&#xff0c;具有极快的查找速度。 举个例子&#xff0c;假设要根据同学的名字查找对应的成绩&am…

【CSS】部分div禁用tailwindcss

部分div禁用tailwindcss 添加css /* 禁用tailwind */ .reset-tailwind, .reset-tailwind * {all: revert; }示例 <template><div class"flex h-screen flex-col bg-white"><div class"reset-tailwind"><h1 class"rrr"&g…

Dest1ny漏洞库: 美团代付微信小程序系统任意文件读取漏洞

大家好&#xff0c;今天是Dest1ny漏洞库的专题&#xff01;&#xff01; 会时不时发送新的漏洞资讯&#xff01;&#xff01; 大家多多关注&#xff0c;多多点赞&#xff01;&#xff01;&#xff01; 0x01 产品简介 美团代付微信小程序系统是美团点评旗下的一款基于微信小程…

uniapp webview嵌入外部h5网页后的消息通知

最近开发了个oa系统&#xff0c;pc端的表单使用form-create开发&#xff0c;form-create 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。移动端使用uniapp开发&#xff0c;但是因为form-create移动端只支持vant&#xff0c;不支持uniapp。官…

面向长范围交互式 LLM 智体的强化学习

25年2月来自 Apple 的论文“Reinforcement Learning for Long-Horizon Interactive LLM Agents”。 交互式数字智体 (IDA) 利用状态数字环境的 API 来执行任务以响应用户请求。虽然由指令调整的大语言模型 (LLM) 驱动 IDA 可以对多步交换中接口调用的反馈做出反应&#xff0c;…