Весенний ботинок (2): Spring Boot подключается к базе данных MySQL

Spring Boot

Часть 1.Бой Spring Boot (1): всего два шага! Eclipse+Maven быстро создает первый проект Spring BootБыл построен проект Spring Boot, на его основе в этой статье для подключения к базе данных MySQL используется Hibernate.

1. Добавьте зависимости в pom.xml

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>   

2. application.properties добавить конфигурацию базы данных

spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true

Если подключение к базе данных записано как spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot, Из-за проблемы с версией MySQL могут быть следующие ошибки, добавьте «?serverTimezone=GMT%2B8» сзади, установите часовой пояс и решите.

image

设置驱动,spring.datasource.driver-class-name=com.mysql.jdbc.Driver会有下面红色的警告信息。 верноcom.mysql.jdbc.DriverУстарело, используйте новый драйверcom.mysql.cj.jdbc.Driver1, изменился наcom.mysql.cj.jdbc.DriverПосле этого все работает нормально.

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.

image

3. Добавьте класс сущности

@Entity представляет класс сущности, @Table(name="user") используется для соответствия таблице использования в базе данных, @Id используется для выражения первичного ключа, а @Column(name="id") используется для указания атрибута id.

@GeneratedValue автоматически увеличивает первичный ключ. Если у вас есть какие-либо вопросы, обратитесь кАнализ исходного кода @GeneratedValue.

package com.example.demo.domain;

import java.io.Serializable;

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

@Entity
@Table(name = "user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private Long id;
    @Column(name = "username")
    private String userName;
    @Column(name = "password")
    private String passWord;

    public User() {
        super();
    }

    public User(String userName, String passWord) {
        super();
        this.userName = userName;
        this.passWord = passWord;
    }

    public Long getId() {
        return id;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

}

4. Добавьте Дао

Слой Dao в основном используется для добавления, удаления, проверки и изменения базы данных. Dao нужно только наследовать класс JpaRepository, почти не нужно писать методы, и он может автоматически генерировать SQL в соответствии с именем метода.Например, findByUserName автоматически сгенерирует метод запроса с userName в качестве параметра.

package com.example.demo.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import com.example.demo.domain.User;

public interface UserRepository extends JpaRepository<User, Long> {
    User findByUserName(String userName);

}

5. Добавьте контроллер

package com.example.demo.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.dao.UserRepository;
import com.example.demo.domain.User;

@RestController
@RequestMapping("user")
public class UserController {

   @Autowired
   private UserRepository userRepository;

   @RequestMapping("/getAllUser")
   @ResponseBody
   public List<User> findAll() {
       List<User> list = new ArrayList<User>();
       list = userRepository.findAll();
       return list;
   }

   @RequestMapping("/getByUserName")
   @ResponseBody
   public User getByUserName(String userName) {
       User user = userRepository.findByUserName(userName);
       return user;
   }

}

Схема структуры проекта после добавления файлов в проект:

image

6. Создайте новую базу данных

новая база данныхmysql://localhost:3306/spring_bootЭто должно быть следующим шагом. Hibernate Хотя он автоматически создаст новую таблицу, но все еще должен вручную встроить базу данных.

Используйте Navicat для создания новой локальной базы данных, щелкните правой кнопкой мыши имя подключения -> Новая база данных -> Заполните информацию о базе данных -> ОК.

image

В пользовательскую таблицу вставьте два тестовых данных:

image

7. Тест

Стартовый проект. Отправьте запрос с Postman для тестирования:

http://localhost:8080//user/getAllUser :

image

http://localhost:8080//user/getByUserName?userName=Turing :

image