硬核!SpringBoot 连接 MySQL 数据库,十分钟啃透
spring.jpa.properties.hibernate.hbm2ddl.auto=updatespring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialectspring.jpa.show-sql= true
如果数据库连接写成 spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot ,由于 MySQL 版本的问题,可能会有以下的错误,在后面加上“?serverTimezone=GMT%2B8”,设置下时区,解决。

设置驱动,spring.datasource.driver-class-name=com.mysql.jdbc.Driver 会有下面红色的警告信息。说的是com.mysql.jdbc.Driver'被弃用了,要使用新的驱动
com.mysql.cj.jdbc.Driver',改成`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.

3. 添加实体类
@Entity 代表这是一个实体类,@Table(name=”user”)用来对应数据库中的 use 表,@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@GeneratedValueprivate 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 层主要用来实现对数据库的增、删、查、改。 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. 添加 Controller
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 {
@Autowiredprivate UserRepository userRepository;
@RequestMapping("/getAllUser")@ResponseBodypublic List<User> findAll() {List<User> list = new ArrayList<User>();list = userRepository.findAll();return list;}
@RequestMapping("/getByUserName")@ResponseBodypublic User getByUserName(String userName) {User user = userRepository.findByUserName(userName);return user;}
}
工程添加文件后工程结构图:

评论