集成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支 ...
随机推荐
- CCPC-2020 黑龙江省赛——Let’s Get Married
题意:~~ 思路:题目给出的数字太少了,我们多写几个,就会发现每层最左边的值等于1.2*k(k+1) ,k代表层数,找规律发现如果一个点的坐标为2.(x,y)且|a|+|b|=k,id<=2*k ...
- GCD and LCM HDU - 4497
题目链接:https://vjudge.net/problem/HDU-4497 题意:求有多少组(x,y,z)满足gcd(x,y,z)=a,lcm(x,y,z)=b. 思路:对于x,y,z都可以写成 ...
- PTA 报数
6-3 报数 (20 分) 报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号.从第一个人开始报数,报到m(<)的人退出圈子:下一个人从1开始报数,报到m的人退出圈子.如此下去,直到留 ...
- 11、Spring教程之声明式事务
1.回顾事务 事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎! 事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性. 事务就是把一系列的动作当成一个独立的工作单元,这 ...
- 优化 ASP.NET Core Docker 镜像的大小
在这容器化的世界里,我们已经很少直接通过文件发布来运行asp.net core程序了.现在大多数情况下,我们都会使用docker来运行程序.在使用docker之前,我们往往需要打包我们的应用程序.as ...
- 【linux】系统编程-4-共享内存
目录 前言 6. 共享内存 6.1 概念 6.2 操作函数 6.2.1 shmget() 6.2.2 shmat() 6.2.3 shmdt() 6.2.4 shmctl() 6.3 例子 参考: 前 ...
- 闲来无事,在微信推文中看到一个炫酷的具有动态特效的中国地图,是用R语言做的,于是尝试了一下
目录 最终的效果图如下: 1.环境准备 2.需要安装的包: 3.进一步配置: end 最终的效果图如下: 1.环境准备 既然是用R语言作图,那么这几个软件是一定需要安装的: R语言的编译器:https ...
- 最小生成树(Prim算法,Kruskal算法 )
声明:图片及内容基于https://www.bilibili.com/video/BV1yp4y1Q74o?from=articleDetail 最小生成树原理 . 普利姆(Prim)算法 原理 Pr ...
- 网关Ocelot功能演示安排的明明白白~~~
前言 网关(Gateway)在微服务架构中至关重要,可以将其理解为是外部客户端(前端.MVC后台等调用方)与后台服务的连接点,通过这层可以做统一的处理,比如路由.身份认证和授权.服务治理等: 网关的好 ...
- 记一次metasploitable2内网渗透之2049端口NFS漏洞
0x01.NFS简介 NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器.操作系统以及低层传送协议无关的存取远程文件的操作.RPC采用了XDR的支持.X ...