首页 > 其他分享 >SpringBoot19 - 数据类型转换

SpringBoot19 - 数据类型转换

时间:2023-02-23 14:33:58浏览次数:38  
标签:类型转换 SpringBoot19 password 密码 字符串 0127 八进制 数据

数据类型转换

​ 先把问题描述一下,这位开发者连接数据库正常操作,但是运行程序后显示的信息是密码错误。

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

​ 其实看到这个报错,几乎所有的学习者都能分辨出来,这是用户名和密码不匹配,就就是密码输入错了,但是问题就在于密码并没有输入错误,这就比较讨厌了。给的报错信息无法帮助你有效的分析问题,甚至会给你带到沟里。如果是初学者,估计这会心态就崩了,我密码没错啊,你怎么能说我有错误呢?来看看用户名密码的配置是如何写的:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
    username: root
    password: 0127

​ 这名开发者的生日是1月27日,所以密码就使用了0127,其实问题就出在这里了。

​ 之前在基础篇讲属性注入时,提到过类型相关的知识,在整数相关知识中有这么一句话,支持二进制,八进制,十六进制

​ 这个问题就处在这里了,因为0127在开发者眼中是一个字符串“0127”,但是在springboot看来,这就是一个数字,而且是一个八进制的数字。当后台使用String类型接收数据时,如果配置文件中配置了一个整数值,他是先安装整数进行处理,读取后再转换成字符串。巧了,0127撞上了八进制的格式,所以最终以十进制数字87的结果存在了。

​ 这里提两个注意点,第一,字符串标准书写加上引号包裹,养成习惯,第二,遇到0开头的数据多注意吧。

总结

  1. yaml文件中对于数字的定义支持进制书写格式,如需使用字符串请使用引号明确标注

    • password: "0127"
      

标签:类型转换,SpringBoot19,password,密码,字符串,0127,八进制,数据
From: https://www.cnblogs.com/Ashen-/p/17147853.html

相关文章