版权声明:博客对我来说是记忆的笔记和知识的分享~非常感谢博客大神的帮助,若有无意侵权,请您联系我,谢谢^_^!转载请声明出处: https://blog.csdn.net/qq_36698956/article/details/86527286
SpringBoot学习之路(X5)- 整合JPA
JPA应用
1、创建应用
选中web模块、JPA、MySql和JDBC(不用选中JDBC也可以,只要跟数据相关的模块,会自动导入JDBC的)
2、导入依赖
<!-- jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>Repository.org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
<!--引入druid数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
3、依赖图查看
4、创建实体类 - 配置JPA注解映射
package com.yhhy.springboot.bean;
import javax.persistence.*;
import java.util.Date;
//使用JPA注解配置映射关系
@Entity //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "student") //@Table来指定和哪个数据表对应;如果省略默认表名就是student
public class Student {
@Id //这是一个主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键
private Integer id;
@Column(name = "stu_name",length = 50)//这是和数据表对应的一个列
private String stuName;
@Column //省略 默认列名就是属性名
private String pwd;
@Column //省略 默认列名就是属性名
private String md5;
@Column //省略 默认列名就是属性名
private Date date;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getMd5() {
return md5;
}
public void setMd5(String md5) {
this.md5 = md5;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
5、创建接口 继承 JPA接口:JpaRepository<T, ID>
package com.yhhy.springboot.repository;
import com.yhhy.springboot.bean.Student;
import org.springframework.data.jpa.repository.JpaRepository;
//继承JpaRepository来完成对数据库的操作
//JpaRepository的两个泛型,第一个:实体类 第二个:主键的类型
public interface StuRepository extends JpaRepository<Student,Integer>{
}
实现的是子级接口,等于拥有了所有的方法
可查看此篇文章:
SpringBoot学习之路(X4)- 整合Spring Data - JPA
6、yml文件配置
spring:
datasource:
username: root
password: root
url: jdbc:mysql://192.168.2.17:3306/student01
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# 数据源其他配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
jpa:
hibernate:
# 控制台显示Sql语句
show-sql: true
# 更新或者创建数据表结构,如果数据库没有此表会根据实体类进行创建或更新
# ddl-auto: update
mybatis:
config-location: classpath:mybatis/mybatis-config.xml #指定全局配置文件的位置
mapper-locations: classpath:mybatis/mapper/*.xml #指定sql映射文件的位置
主要是:
7、创建 Controller
package com.yhhy.springboot.controller;
import com.yhhy.springboot.bean.Student;
import com.yhhy.springboot.repository.StuRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class Stu02Controller {
//注入接口
@Autowired
StuRepository stuRepository;
/**
* 获取一个学生
* @param id
* @return
*/
@GetMapping("/stu02/{id}")
public Student getStu(@PathVariable("id") Integer id){
List<Student> all = stuRepository.findAll();
return stuRepository.getOne(id);
}
}