作者: | 来源:互联网 | 2023-07-11 13:29
看代码吧。我是新手,但我真不知道这spring boot连数据库死活连不上
首先看java正常连接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| import java.sql.*;
public class A {
// JDBC 驱动名及数据库 URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/test?serverTimezOne=GMT%2B8";
// 数据库的用户名与密码,需要根据自己的设置
static final String USER = "springuser";
static final String PASS = "123456";
public static void main(String[] args) {
Connection cOnn= null;
Statement stmt = null;
try{
// 注册 JDBC 驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 打开链接
System.out.println("连接数据库...");
cOnn= DriverManager.getConnection(DB_URL,USER,PASS);
// 执行查询
System.out.println(" 实例化Statement对象...");
stmt = conn.createStatement();
stmt.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 关闭资源
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}// 什么都不做
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
System.out.println("Goodbye!");
}
} |
输出如下
1 2 3
| 连接数据库...
实例化Statement对象...
Goodbye! |
接下来看spring boot
application.properties配置
1 2 3 4 5 6 7 8
| server.port = 80
#server.ssl.key-store = classpath:sample.jks
#server.ssl.key-store-password = secret
#server.ssl.key-password = password
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezOne=GMT%2B8
spring.datasource.username=springuser
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver |
pom.xl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
org.springframework.boot
spring-boot-starter-parent
2.1.3.RELEASE
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-web
org.hibernate.validator
hibernate-validator
org.apache.tomcat.embed
tomcat-embed-el
org.springframework.boot
spring-boot-starter-test
test
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-jdbc
org.mariadb.jdbc
mariadb-java-client
2.4.0
org.springframework.boot
spring-boot-maven-plugin
|
ssl 数据库类
1 2 3 4 5 6 7 8 9 10 11
| @Controller
public class ssl {
@Autowired
private JdbcTemplate jdbcTemplate;
@GetMapping("/hello")
@ResponseBody
public String helloWorld() {
Map map=jdbcTemplate.queryForMap("select * from human");
return "hello";
}
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @SpringBootApplication
public class Start {
// @Bean
// public ServletWebServerFactory servletContainer() {
// TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
// tomcat.addAdditionalTomcatConnectors(createStandardConnector());
// return tomcat;
// }
//
// private Connector createStandardConnector() {
// Connector cOnnector= new Connector("org.apache.coyote.http11.Http11NioProtocol");
// connector.setPort(0);
// return connector;
// }
public static void main(String[] args) {
SpringApplication.run(Start.class, args);
}
} |
报错
1 2 3 4 5 6 7
| {
"timestamp": "2019-03-15T06:14:06.814+0000",
"status": 500,
"error": "Internal Server Error",
"message": "Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO)",
"path": "/hello"
} |
我改了数据库真的
1 2 3 4 5 6 7 8 9 10 11
| mysql> select user,host from user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| root | % |
| springuser | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
5 rows in set (0.01 sec) |
我知道spring有点花成本学,但是这个我都搞了一上午,我去。。。。。。。