1.Spring Data JPA简介

Spring Data是一个用于简化数据访问,并支持云服务的开源框

使用完成Spring Data JPA对user表的CRUD操作。

2.步骤

1.创建工程勾选依赖

2.编写Pojo,添加注解

3.编写Dao(需要继承JpaRepository<T,ID>)

4.编写Service

5.编写Controller

6.测试

3.实现

创建工程勾选依赖

pom.xml

<?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 https://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.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.itheima</groupId>
<artifactId>springboot-jpa</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-jpa</name>
<description>springboot整合jpa</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>

  编写pojo

package com.programme.pojo;

import javax.persistence.*;

/**
* @program: springboot
* @description: ${description}
* @author: Mr.zw
* @create: 2021-05-11 20:30
**/
@Table(name = "t_user")//将实体和数据库的表关系关联起来
@Entity//标识这个对象是一个数据库的映射对象
public class User {
/**
* TABLE:将数据库表的主键保存在一张表中进行管理
* SEQUENCE:Oracle数据库主键自增的方式
* IDENTITY:使用数据库的主键自增
* AUTO:将主键自增交给JPA框架帮我们进行管理
*/
@Id//标识该属性为数据库的主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//标识主键的自增的方式
private Integer id;
//@Column(name = "username")将数据库字段关联起来,如果名字一样则可以忽略
private String username;
private String password;
private String address; @Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + username + '\'' +
", password='" + password + '\'' +
", address='" + address + '\'' +
'}';
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return username;
} public void setName(String name) {
this.username = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
}
}

  编写dao接口

package com.programme.dao;

import com.programme.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository; /**
* @program: springboot
* @description: ${description}
* @author: Mr.zw
* @create: 2021-05-11 20:55
**/
public interface UserDao extends JpaRepository<User,Integer> {
}

  编写service接口以及实现类

package com.programme.service;

import com.programme.pojo.User;

import java.util.List;

/**
* @program: springboot
* @description: ${description}
* @author: Mr.zw
* @create: 2021-05-11 20:59
**/
public interface UserService {
//查询全部
public List<User>findAll();
//主键查询
public User findOne(Integer id);
//修改
public void update(User user);
//删除
public void delete(Integer id);
//新增
public void insert(User user);
}

  

package com.programme.impl;

import com.programme.dao.UserDao;
import com.programme.pojo.User;
import com.programme.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; /**
* @program: springboot
* @description: ${description}
* @author: Mr.zw
* @create: 2021-05-11 21:07
**/
@Service
public class UserServiceImpl implements UserService { @Autowired
private UserDao userDao; //查询全部
@Override
public List<User> findAll() {
return userDao.findAll();
}
//主键查询
@Override
public User findOne(Integer id) {
return userDao.findById(id).get();//.findById()返回选择器对象.get()返回User
}
//修改
@Override
public void update(User user) {
//根据主键进行判断,若主键存在,执行更新,若主键不存在或者为空,执行新增
userDao.save(user);
}
//删除
@Override
public void delete(Integer id) {
userDao.deleteById(id);//deleteAll 删除全部
}
//新增
@Override
public void insert(User user) {
userDao.save(user);
}
}

  编写controller

package com.programme.controller;

import com.programme.pojo.User;
import com.programme.service.UserService;
import org.hibernate.annotations.GeneratorType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import java.util.List; /**
* @program: springboot
* @description: ${description}
* @author: Mr.zw
* @create: 2021-05-11 21:18
**/
@RestController
@RequestMapping(value = "/jpa")
public class UserController {
@Autowired
private UserService userService;
//查询全部
@PostMapping(value = "/findAll")
public List<User> findAll(){
return userService.findAll();
}
//主键查询
@GetMapping(value = "/findById")
public User findById(@PathVariable Integer id){
return userService.findOne(id);
}
//修改
@GetMapping(value = "/updateUser")
public void updateUser(User user){
userService.update(user);
}
//删除
@GetMapping(value = "/deleteById")
public void deleteById(@PathVariable Integer id){
userService.delete(id);
}
//新增
@GetMapping(value = "/insert")
public void insert(User user){
userService.insert(user);
}
}

  配置application

server:
port: 18081
servlet:
context-path: /springboot-jpa
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: root
jpa:
database: mysql
show-sql: true
generate-ddl: true #开启建表策略
hibernate:
ddl-auto: validate #hibernate.ddl-auto,建表策略:
#update:每次运行程序,没有表会新建表,表内有数据不会清空,只会更新
#create:每次运行程序,没有表会新建表,表内有数据会清空
#create-drop:每次程序结束的时候会清空表
#validate:运行程序会校验数据与数据库的字段类型是否相同,不同会报错

  

总结

集成SpringDataJPA

1.Dao需要继承JpaRepository<T,ID>

2.JpaRepository<T,ID>中已经实现了增删改查,可以拿着直接使用

集成Spring Data JPA的更多相关文章

  1. springboot集成Spring Data JPA数据查询

    1.JPA介绍 JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.它的出现主要是为 ...

  2. Spring Boot集成Spring Data Jpa完整实例

    步骤: 添加依赖: 配置文件: 出了数据库的配置,还要配置jpa相关的: 实体类: Dao接口: 定义一个查询的方法,如果是jpa默认就有也可以不写: 测试: 如果报下面的错误,说明jdk9中缺少相关 ...

  3. SpringBoot系列之Spring Data Jpa集成教程

    SpringBoot系列之Spring Data Jpa集成教程 Spring Data Jpa是属于Spring Data的一个子项目,Spring data项目是一款集成了很多数据操作的项目,其下 ...

  4. Spring Boot (五)Spring Data JPA 操作 MySQL 8

    一.Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Sprin ...

  5. JPA、Hibernate、Spring data jpa之间的关系,终于明白了

    什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...

  6. Spring Boot-JPA、Hibernate、Spring data jpa之间的关系

    什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...

  7. JPA、Hibernate、Spring data jpa之间的关系,以及和springboot的整合

    什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...

  8. JPA、Hibernate、Spring Data JPA 的关系,你懂吗?

    来源:https://my.oschina.net/u/3080373/blog/1828589 什么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表 ...

  9. JPA、Hibernate、Spring data jpa之间的关系

    什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...

随机推荐

  1. Flutter资源

    目录 文章 一开始 HOWTO文档 网站/博客 高级 视频 组件 演示 UI 材料设计 图片 地图 图表 导航 验证 文字和富文本 分析.流量统计 自动构建 风格样式 媒体 音频 视频 语音 存储 获 ...

  2. springmvc 最权威的知识点

    1.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,C ...

  3. Vue.js 学习笔记之七:使用现有组件

    5.3 使用现有组件 在之前的五个实验中,我们所演示的基本都是如何构建自定义组件的方法,但在具体开发实践中,并非项目中所有的组件都是需要程序员们自己动手来创建的.毕竟在程序设计领域,"不要重 ...

  4. maven-plugin-shade 详解

    一.介绍 [1] This plugin provides the capability to package the artifact in an uber-jar, including its d ...

  5. Hibernate的Dao层通用设计

    hibernate作为一款优秀的数据库持久化框架,在现实的运用中是非常广泛的.它的出现让不熟悉sql语法的程序员能开发数据库连接层成为一种可能,但是理想与现实永远是有差距的.开发过程中如果只使用hql ...

  6. Redis系列-存储篇sorted set主要操作命令

    Redis系列-存储篇sorted set主要操作函数小结 redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sort ...

  7. Dapper, Ef core, Freesql 插入大量数据性能比较(一)

    需求:导入9999行数据时Dapper, Ef core, Freesql 谁的性能更优,是如何执行的,级联增加谁性能更佳. 确认方法:sql server 的 sys.dm_exec_query_s ...

  8. 201873030133-杨子豪 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 了解软件工程的作用与意义,将软件工程与过去所学相结合 这个作业在哪些方面帮助我实现学习目标 体验了结对式的 ...

  9. oo第三单元——社交网络

    第三单元的作业背景是实现一个社交观关系模拟系统,主要训练了JML的阅读和理解能力,和图的一些数据结构和算法. JML语言的理论基础 JML相对于实现代码是比较抽象的,规定了方法的前提副作用结果.数据的 ...

  10. OAuth2.0理解和用法

    现在网络的资料到处都是,很容易搜索到自己想要的答案.但答案通常只能解决自己一部分的问题.如果自己想要有一套自己的解决方案,还得重新撸一遍靠谱. 我需要学下OAuth2.0吗? 没看之前以为OAuth2 ...