您的位置:首页 > 编程语言 > Java开发

springBoot入门总结(三)整合SpringDataJPA

2018-03-03 18:42 796 查看
       在我们的项目开发中,数据库的访问及存储都是最为核心的部分,SpringBoot为我们提供了多种数据库来做数据的存储及读取。目前企业开发中应用最为广泛的数据库有,关系型数据库MySQL,oracle,sqlserver,非关系型数据库redis,mongodb等。
        本章将通过使用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的记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息