集成Spring Data JPA
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的更多相关文章
- springboot集成Spring Data JPA数据查询
1.JPA介绍 JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.它的出现主要是为 ...
- Spring Boot集成Spring Data Jpa完整实例
步骤: 添加依赖: 配置文件: 出了数据库的配置,还要配置jpa相关的: 实体类: Dao接口: 定义一个查询的方法,如果是jpa默认就有也可以不写: 测试: 如果报下面的错误,说明jdk9中缺少相关 ...
- SpringBoot系列之Spring Data Jpa集成教程
SpringBoot系列之Spring Data Jpa集成教程 Spring Data Jpa是属于Spring Data的一个子项目,Spring data项目是一款集成了很多数据操作的项目,其下 ...
- Spring Boot (五)Spring Data JPA 操作 MySQL 8
一.Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Sprin ...
- JPA、Hibernate、Spring data jpa之间的关系,终于明白了
什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...
- Spring Boot-JPA、Hibernate、Spring data jpa之间的关系
什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...
- JPA、Hibernate、Spring data jpa之间的关系,以及和springboot的整合
什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...
- JPA、Hibernate、Spring Data JPA 的关系,你懂吗?
来源:https://my.oschina.net/u/3080373/blog/1828589 什么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表 ...
- JPA、Hibernate、Spring data jpa之间的关系
什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...
随机推荐
- python-3-3 字典
一 元组(tuple) 1.元组也是一个list,他和list的区别是 元组里面的数据无法修改 元祖用()小括号表示,如果元祖里面只有一个元素的话,必须在这个元素的后面添加一个逗号,不然就不是元祖了 ...
- 攻防世界 reverse crazy
crazy 百越杯2018 查看main函数: int __cdecl main(int argc, const char **argv, const char **envp) { __int64 v ...
- 攻防世界 reverse 进阶 15-Reversing-x64Elf-100
15.Reversing-x64Elf-100 这题非常简单, 1 signed __int64 __fastcall sub_4006FD(__int64 a1) 2 { 3 signed int ...
- MyBatis工程搭建&MyBatis实现Mapper配置查询
一.MyMyBatis工程搭建 新建Maven项目:mybatis-demo 准备数据源 1 # 删除mybatis_demo数据库 2 drop database if exists mybatis ...
- C++并发与多线程学习笔记--单例设计模式、共享数据分析
设计模式 共享数据分析 call_once 设计模式 开发程序中的一些特殊写法,这些写法和常规写法不一样,但是程序灵活,维护起来方便,别人接管起来,阅读代码的时候都会很痛苦.用设计模式理念写出来的代码 ...
- Tony老师带你来看Java设计模式:代理模式
目录 定义 作用 意图 主要解决问题 优缺点 与装饰者模式的区别 结构 从Tony老师来看实现方式 静态代理 动态代理 JDK动态代理的实现 cglib动态代理的实现 定义 为其他对象提供一种代理来控 ...
- Git分支及其协同开发
目录 Git分支 Git是如何保存数据的 Git分支的本质 Git分支的操作 远程仓库与本地仓库分支开发 一个项目多个远程仓库 远程仓库操作命令 协同开发 Git flow工作流 GitLub安装搭建 ...
- 做个开源博客学习Vite2 + Vue3 (一)搭建项目
前言 不会 webpack,遇到报错就一头雾水,完全不知道怎么办,而且体积还大速度还慢. 所以尤雨溪做了 vite 后就很向往,只是知道自己水平有限还是等大佬先趟趟坑,等差不多了在跳. 现在vite2 ...
- Django 模板(Template)
1. 模板简介 2. 模板语言 DTL 3. 模板继承 4. HTML 转义 5. CSRF 1. 模板简介 作为 Web 开发框架,Django 提供了模板,可以很便利的动态生成 HTML.模版系统 ...
- 15- web安全测试与appscan Scrawlr的使用
web应用安全性问题 认证与授权测试要点 认证与授权测试要点之授权 session与cookie之cookie测试点: session测试点: 上传文件漏洞 SQL注入 SQL注入原理 SQL注入检查 ...