如何在mysql数据库和springboot应用程序之间建立连接

时间:2019-06-05 05:36:06

标签: java mysql spring-boot jpa

我已经在表名test_schema中创建了一个表人。我已经从mysql工作台中的DATABASE> CONNECT TO DATABASE连接数据库。然后,我尝试与之建立联系,但这似乎不起作用。 顺便说一句,我已经从github克隆了它,并试图在这里运行我的数据库。

我试图查看状态,但是显示正在运行,但是数据没有从数据库中获取。

application.yml

  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/persons
    username: root
    password: users
  jpa:
    hibernate.ddl-auto: null
    generate-ddl: true
    show-sql: true```


UsersRepository.java

package com.techprimers.db.repository;

import com.techprimers.db.model.Users;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UsersRepository extends JpaRepository<Users, Integer> {
}

Users.java

package com.techprimers.db.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Users {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;
    @Column(name = "token")
    private String token;
    @Column(name = "name")
    private String name;
    @Column(name = "post")
    private Integer post;

    public Users() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getPost() {
        return post;
    }

    public void setPost(Integer post) {
        this.post = post;
    }


}

UsersResources.java

package com.techprimers.db.resource;

import com.techprimers.db.model.Users;
import com.techprimers.db.repository.UsersRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping(value = "/rest/users")
public class UsersResource {

    @Autowired
    UsersRepository usersRepository;

    @GetMapping(value = "/all")
    public List<Users> getAll() {
        return usersRepository.findAll();
    }

}

SpringBootMysqldbApplication.java

package com.techprimers.db;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@EnableJpaRepositories(basePackages = "com.techprimers.db.repository")
@SpringBootApplication
public class SpringBootMysqldbApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMysqldbApplication.class, args);
    }
}

结果应该是表格元素,但显示的是Whitelabel错误页面。我不知道我在做什么错,因为没什么可做的。我只是根据自己的需要修改了代码,但我想我以某种方式弄乱了数据库连接,或者我做错了数据库连接。 预先感谢。

2 个答案:

答案 0 :(得分:0)

不幸的是,我还不能发表评论,但是我认为您的数据库默认是从MySQL 5.7.5开始强制执行ssl,但是默认情况下,客户端没有强制执行此操作。检查此URL,请jdbc:mysql:// localhost:3306 / persons?useSSL = false

如Avi所述,如果您的数据库是test_schema,则将其写在url中而不是人员中

请在问题中直接提供错误和例外情况

Link how to handle ssl in mysql

Stackoverflow spring and mysql ssl question

答案 1 :(得分:0)

我已经注意到您说“表名”是“ PERSONS”,但是在url中您提到的是数据库名

  

jdbc:mysql:// $ {DB_SERVER_NAME}:$ {DB_PORT} / $ {DB_DATABASE}:currentSchema = $ {DB_SCHEMA};

jdbc:mysql://localhost:3306/<db-name>

检查一次

相关问题