首先配置mysql
在pom.xml中添加依赖
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
runtime
在application.properties配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver更换为以下
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
遇到问题
数据库密码错误会报错“Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)”
mysql数据驱动版本问题
com.mysql.jdbc.Driver不被使用了,需要更改为"com.mysql.cj.jdbc.Driver"
会报错
Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
出现The server time zone value ‘�й���ʱ��‘ is unrecogni
需要在你配置mysql数据库的文件的url后拼接“?serverTimezone=UTC”
解决java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
目前不知道是什么原因,反正重新写了一遍配置文件,就好了
Spring中EmptyResultDataAccessException异常产生的原理及处理方法
Spring中使用JdbcTemplate的queryForObject方法,当查不到数据时会抛出异常
当results的size大于1时,还会抛出IncorrectResultSizeDataAccessException异常,以保证返回的记录只有一条。
如果我们想查询结果为空时,返回null而不是抛出异常,该怎么办呢?
Object object = null;
try {
object = jdbcTemplate.queryForObject();
} catch (EmptyResultDataAccessException e) {
return null;
}
return object;
用try-catch捕获
不足:在一开始没有在配置完成后先进行连接测试,导致后面写完才开始测试的时候,废了好多时间修改