springBoot入门总结(三)整合SpringDataJPA
2018-03-03 18:42
796 查看
在我们的项目开发中,数据库的访问及存储都是最为核心的部分,SpringBoot为我们提供了多种数据库来做数据的存储及读取。目前企业开发中应用最为广泛的数据库有,关系型数据库MySQL,oracle,sqlserver,非关系型数据库redis,mongodb等。
本章将通过使用SpringBoot访问MySQL结合SpringDataJPA完成CRUD(Create,Read,Update,Delete)简单操作。
JPA(Java Persistence API)是一种Java持久化解决方案,负责把数据保存到数据库,实际上它就是一种标准、规范,而不是具体的实现。JPA属于重量级的,因为它需要运行在JAVA EE容器中,而Spring Data JPA提供了轻量级的实现,在任何servlet容器中都可以运行。
Spring Data JPA相对于JAVA EE中的JPA,配置更简单,以轻量级的方式实现了部分在 EJB 容器环境下才具有的功能,将 EntityManager 的创建与销毁、事务管理等代码抽取出来,并由其统一管理,并且极大的简化了数据库访问层的代码。
官网地址:http://projects.spring.io/spring-data-jpa/
打开POM文件,添加SpringBoot对MySQL以及SpringDataJPA的支持依赖。
添加mysql-connector-java的支持
MySQL数据库是我事先安装好的,我在本地安装了MySQL 5.7.20.0版本,并且创建了一个名叫test的数据库,如果需求可以查看安装MySQL详解
MySQL数据库管理工具SQLyog,在test数据库下新建表结构t_user,详情如下:
修改application.properties文件,添加数据源配置。
修改application.properties文件,添加JPA配置。
JPA的配置了show-sql用来在控制台输出JPA自动生成的sql语句。
3.编写实体类
根据数据库中的字段来创建一个user实体类作为对应操作。package com.mxy.springboot.entity;
import javax.persistence.*;
@Entity
@Table(name="t_user")
public class User {
@Id
@GeneratedValue
@Column(name = "t_id")
private Long id;
@Column(name = "t_name")
private String name;
@Column(name = "t_age")
private String age;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Column(name = "t_address")
private String address;
}
4.编写控制器Controller
我们采用@RestController注解来编写一个控制器
package com.mxy.springboot.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/user")
public class JPAController {
}5.创建JPA接口类
创建UserJPA接口并且继承SpringDataJPA内的接口作为父类,UserJPA继承了JpaRepository接口(SpringDataJPA提供的简单数据操作接口)、JpaSpecificationExecutor(SpringDataJPA提供的复杂查询接口)、Serializable(序列化接口)。package com.mxy.springboot.jpa;
import com.mxy.springboot.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.io.Serializable;
public interface UserJPA extends JpaRepository<User,Long>,JpaSpecificationExecutor<User>,Serializable {
} 我们并不需要做其他的任何操作了,因为SpringBoot以及SpringDataJPA会为我们全部搞定,SpringDataJPA内部使用了类代理的方式让继承了它接口的子接口都以spring管理的Bean的形式存在。
以上,我们已经完成了SpringBoot整合JPA的工作,接下来我们将使用SpringDataJPA完成数据的CRUD(Create,Read,Update,Delete)简单操作。
1.添加新增、更新方法package com.mxy.springboot.controller;
import com.mxy.springboot.entity.User;
import com.mxy.springboot.jpa.UserJPA;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/user")
public class JPAController {
@Autowired
private UserJPA userJPA;
/**
* 数据新增或更新,save方法可以执行添加也可以执行更新,如果需要执行持久化的实体存在主键值则更新数据,如果不存在则添加数据。
*/
@RequestMapping(value = "/save", method = RequestMethod.GET)
public User save(User user) {
return userJPA.save(user);
}
}运行程序,查看结果,添加一条用户信息到数据库中,请求地址:http://localhost:8080/user/save?name=zhangsan&age=20&address=beijing
查看数据库,保存成功。
更新地址为“北京市朝阳区”,请求地址:http://localhost:8080/user/save?id=1&address=北京市朝阳区
查看数据库结果,更新数据成功。
2.查询方法
JPAController中增加查询列表的方法/**
* 查询用户信息
* */
@RequestMapping(value = "/list",method = RequestMethod.GET)
public List<User> list(){
return userJPA.findAll();
}其中userJps.findAll()方法就是SpringDataJPA为我们提供的内置方法,它可以查询表内所有的数据。
运行程序,请求地址:http://localhost:8080/user/list
3.添加删除方法/**
* 删除用户信息,删除信息后返回剩余信息
* */
@RequestMapping(value = "/delete",method = RequestMethod.GET)
public List<User> delete(Long id){
userJPA.deleteById(id);
return userJPA.findAll();
}执行结果,请求地址:http://localhost:8080/user/delete?id=1
可以看到,成功删除id=1的记录。
本章将通过使用SpringBoot访问MySQL结合SpringDataJPA完成CRUD(Create,Read,Update,Delete)简单操作。
一、了解SpringDataJPA
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,其主要目标是使得对数据的访问变得方便快捷。Spring Data包含多个子项目,spring-data-jpa就是其子项目之一。JPA(Java Persistence API)是一种Java持久化解决方案,负责把数据保存到数据库,实际上它就是一种标准、规范,而不是具体的实现。JPA属于重量级的,因为它需要运行在JAVA EE容器中,而Spring Data JPA提供了轻量级的实现,在任何servlet容器中都可以运行。
Spring Data JPA相对于JAVA EE中的JPA,配置更简单,以轻量级的方式实现了部分在 EJB 容器环境下才具有的功能,将 EntityManager 的创建与销毁、事务管理等代码抽取出来,并由其统一管理,并且极大的简化了数据库访问层的代码。
官网地址:http://projects.spring.io/spring-data-jpa/
二、SpringBoot整合SpringDataJPA
1.添加依赖关系打开POM文件,添加SpringBoot对MySQL以及SpringDataJPA的支持依赖。
添加mysql-connector-java的支持
<!--引入MySQL的依赖关系--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>添加spring-data-jpa的支持
<!--引入JPA的依赖关系--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>2.配置数据源以及JPA
MySQL数据库是我事先安装好的,我在本地安装了MySQL 5.7.20.0版本,并且创建了一个名叫test的数据库,如果需求可以查看安装MySQL详解
MySQL数据库管理工具SQLyog,在test数据库下新建表结构t_user,详情如下:
修改application.properties文件,添加数据源配置。
修改application.properties文件,添加JPA配置。
JPA的配置了show-sql用来在控制台输出JPA自动生成的sql语句。
3.编写实体类
根据数据库中的字段来创建一个user实体类作为对应操作。package com.mxy.springboot.entity;
import javax.persistence.*;
@Entity
@Table(name="t_user")
public class User {
@Id
@GeneratedValue
@Column(name = "t_id")
private Long id;
@Column(name = "t_name")
private String name;
@Column(name = "t_age")
private String age;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Column(name = "t_address")
private String address;
}
4.编写控制器Controller
我们采用@RestController注解来编写一个控制器
package com.mxy.springboot.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/user")
public class JPAController {
}5.创建JPA接口类
创建UserJPA接口并且继承SpringDataJPA内的接口作为父类,UserJPA继承了JpaRepository接口(SpringDataJPA提供的简单数据操作接口)、JpaSpecificationExecutor(SpringDataJPA提供的复杂查询接口)、Serializable(序列化接口)。package com.mxy.springboot.jpa;
import com.mxy.springboot.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.io.Serializable;
public interface UserJPA extends JpaRepository<User,Long>,JpaSpecificationExecutor<User>,Serializable {
} 我们并不需要做其他的任何操作了,因为SpringBoot以及SpringDataJPA会为我们全部搞定,SpringDataJPA内部使用了类代理的方式让继承了它接口的子接口都以spring管理的Bean的形式存在。
以上,我们已经完成了SpringBoot整合JPA的工作,接下来我们将使用SpringDataJPA完成数据的CRUD(Create,Read,Update,Delete)简单操作。
三、使用SpringDataJPA完成数据的CRUD
JPAController控制器内编写代码,完成数据的CRUD操作。1.添加新增、更新方法package com.mxy.springboot.controller;
import com.mxy.springboot.entity.User;
import com.mxy.springboot.jpa.UserJPA;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/user")
public class JPAController {
@Autowired
private UserJPA userJPA;
/**
* 数据新增或更新,save方法可以执行添加也可以执行更新,如果需要执行持久化的实体存在主键值则更新数据,如果不存在则添加数据。
*/
@RequestMapping(value = "/save", method = RequestMethod.GET)
public User save(User user) {
return userJPA.save(user);
}
}运行程序,查看结果,添加一条用户信息到数据库中,请求地址:http://localhost:8080/user/save?name=zhangsan&age=20&address=beijing
查看数据库,保存成功。
更新地址为“北京市朝阳区”,请求地址:http://localhost:8080/user/save?id=1&address=北京市朝阳区
查看数据库结果,更新数据成功。
2.查询方法
JPAController中增加查询列表的方法/**
* 查询用户信息
* */
@RequestMapping(value = "/list",method = RequestMethod.GET)
public List<User> list(){
return userJPA.findAll();
}其中userJps.findAll()方法就是SpringDataJPA为我们提供的内置方法,它可以查询表内所有的数据。
运行程序,请求地址:http://localhost:8080/user/list
3.添加删除方法/**
* 删除用户信息,删除信息后返回剩余信息
* */
@RequestMapping(value = "/delete",method = RequestMethod.GET)
public List<User> delete(Long id){
userJPA.deleteById(id);
return userJPA.findAll();
}执行结果,请求地址:http://localhost:8080/user/delete?id=1
可以看到,成功删除id=1的记录。
相关文章推荐
- springboot 入门教程(6)--- 整合Spring data JPA实现CRUD(附源码)
- 5.1 入门整合案例(SpringBoot+Spring-data-elasticsearch) ---- good
- SpringBoot 整合 SpringData 入门案例(一)
- springboot整合spring data jpa
- 入门整合案例(SpringBoot+Spring-data-elasticsearch) ---- (指定分词器)
- Spring Boot入门教程(7)---整合jpa,Shiro进行权限管理(附源码)
- springBoot整合springData Jpa
- Spring Boot整合Spring MVC、Spring、Spring Data JPA(Hibernate)
- springboot干货——(七)springboot整合Spring Data JPA
- SpringBoot整合Spring Data JPA、MySQL、Druid并使用Mockito实现单元测试
- springboot整合spring data jpa 动态查询
- spring boot 整合spring data jpa
- 【spring boot】9.spring boot+spring-data-jpa的入门使用,实现数据持久化
- spring-boot入门整合jpa基于maven
- spring boot 整合spring data jpa
- spring boot 整合 spring data jpa
- Spring Boot + Spring Data JPA 项目整合开发记录(持续更新)
- 5.1 入门整合案例(SpringBoot+Spring-data-elasticsearch) ---- good
- spring-boot、spring-data-jpa、hibernate整合
- SpringBoot入门(三)--数据库操作&&Spring-data-jpa的使用