昨天学习了springboot 如何 整合 简单的mybatis , 今天来学习一下springboot 如何 整合 jpa
spring data jpa 也是用于简化数据库访问的持久化规范,在企业中也经常用到,有必要简单学习一下,今天我就来打一个最简单的springboot-jpa项目。(其实也是做个记录,方便自己以后查询)
一。新建项目
填写简单的信息
选择web,Jpa,mysql
选择存放路径
然后启动项目,因为有了之前的经验,知道是启动不起来的,因为要配置mysql数据库的一些信息
于是,我们在resources目录下,创建 application.yml 文件
# database
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 11111111
# jpa
jpa:
hibernate:
ddl-auto: update
show-sql: true
启动后发现还是报错
日志中有这句提示:
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.
然后我就把application.yml 中的驱动类
driver-class-name: com.mysql.jdbc.Driver
改为:
driver-class-name: com.mysql.cj.jdbc.Driver
继续重启发现还是报错:java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
我百度后有人说是因为我们数据库驱动版本过高,而我本地的数据库版本比较低导致的,所以我要降低数据库驱动的版本
我在创建项目的时候选择springboot 的版本2.1.2 我将springboot 的版本修改为 2.0.8后,pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.taoj</groupId>
<artifactId>springboot_jpa02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_jpa02</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然后启动,没有报错,并且可以正常访问
接下来我还是访问昨天创建的 test 数据库 happiness 表
根据 happiness 编写实体类,先来看一下 项目结构:
新建实体类: Happiness
package com.taoj.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="happiness")
public class Happiness {
@Id
@GeneratedValue
private Integer id;
private String city;
private String num;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
@Override
public String toString() {
return "Happiness{" +
"id=" + id +
", city='" + city + '\'' +
", num='" + num + '\'' +
'}';
}
}
新建一个 UserInfoRepository 接口
package com.taoj.repository;
import com.taoj.entity.Happiness;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserInfoRepository extends JpaRepository<Happiness, Integer> {
Happiness findHappinessById(Integer id);
}
最后编写controller
package com.taoj.controller;
import com.taoj.entity.Happiness;
import com.taoj.repository.UserInfoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@Autowired
private UserInfoRepository userInfoRepository;
@RequestMapping("/hello")
@ResponseBody
public String sayHello(){
return "hello spring boot jpa";
}
@RequestMapping("/getHappiness")
@ResponseBody
public String getHappiness(){
Happiness happiness = userInfoRepository.findHappinessById(1001);
System.out.println(happiness.toString());
return happiness.toString();
}
}
最后访问:
http://127.0.0.1:8080/getHappiness
结果正常
以上项目是参照别人的博客本地验证的。感谢一下作者:
https://blog.csdn.net/static_coder/article/details/79758085
最后贴上 源码地址: https://github.com/taoxiaotao6/springboot_jpa.git