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. python-3-3 字典

    一 元组(tuple) 1.元组也是一个list,他和list的区别是 元组里面的数据无法修改 元祖用()小括号表示,如果元祖里面只有一个元素的话,必须在这个元素的后面添加一个逗号,不然就不是元祖了 ...

  2. 攻防世界 reverse crazy

    crazy 百越杯2018 查看main函数: int __cdecl main(int argc, const char **argv, const char **envp) { __int64 v ...

  3. 攻防世界 reverse 进阶 15-Reversing-x64Elf-100

    15.Reversing-x64Elf-100 这题非常简单, 1 signed __int64 __fastcall sub_4006FD(__int64 a1) 2 { 3 signed int ...

  4. MyBatis工程搭建&MyBatis实现Mapper配置查询

    一.MyMyBatis工程搭建 新建Maven项目:mybatis-demo 准备数据源 1 # 删除mybatis_demo数据库 2 drop database if exists mybatis ...

  5. C++并发与多线程学习笔记--单例设计模式、共享数据分析

    设计模式 共享数据分析 call_once 设计模式 开发程序中的一些特殊写法,这些写法和常规写法不一样,但是程序灵活,维护起来方便,别人接管起来,阅读代码的时候都会很痛苦.用设计模式理念写出来的代码 ...

  6. Tony老师带你来看Java设计模式:代理模式

    目录 定义 作用 意图 主要解决问题 优缺点 与装饰者模式的区别 结构 从Tony老师来看实现方式 静态代理 动态代理 JDK动态代理的实现 cglib动态代理的实现 定义 为其他对象提供一种代理来控 ...

  7. Git分支及其协同开发

    目录 Git分支 Git是如何保存数据的 Git分支的本质 Git分支的操作 远程仓库与本地仓库分支开发 一个项目多个远程仓库 远程仓库操作命令 协同开发 Git flow工作流 GitLub安装搭建 ...

  8. 做个开源博客学习Vite2 + Vue3 (一)搭建项目

    前言 不会 webpack,遇到报错就一头雾水,完全不知道怎么办,而且体积还大速度还慢. 所以尤雨溪做了 vite 后就很向往,只是知道自己水平有限还是等大佬先趟趟坑,等差不多了在跳. 现在vite2 ...

  9. Django 模板(Template)

    1. 模板简介 2. 模板语言 DTL 3. 模板继承 4. HTML 转义 5. CSRF 1. 模板简介 作为 Web 开发框架,Django 提供了模板,可以很便利的动态生成 HTML.模版系统 ...

  10. 15- web安全测试与appscan Scrawlr的使用

    web应用安全性问题 认证与授权测试要点 认证与授权测试要点之授权 session与cookie之cookie测试点: session测试点: 上传文件漏洞 SQL注入 SQL注入原理 SQL注入检查 ...