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>中已经实现了增删改查,可以拿着直接使用

最新文章

  1. log4j+mybatis打印数据库日志
  2. C#设计模式之工厂方法
  3. git --- push到远端
  4. 内嵌DB
  5. HTML5学习之跨文档传输消息(七)
  6. WPF小记——DockPanel使用不当引起界面显示问题
  7. The 15th Zhejiang University Programming Contest
  8. windows 7 打开控制面板的命令
  9. leetcode_question_119 Pascal&#39;s Triangle II
  10. 最长回文子串 | 勇幸|Thinking
  11. 分布式缓存HttpRuntime.cache应用到单点登陆中_优化登陆
  12. 基于python的tagcloud
  13. Vue.js数据响应基础原理
  14. 提升 PLSQL 开发性能漫谈
  15. web版ssh的使用
  16. python中的zip、map、reduce 、lambda函数的使用。
  17. Python list 常用方法总结
  18. 基金 、 社保和QFII等机构的重仓股排名评测
  19. python3 的 round 函数的 练习
  20. c/c++ sizeof运算符详解以及对象大小

热门文章

  1. C++单重继承分析
  2. OpenCV图像处理中“投影技术”的使用
  3. 阿里最强 Python 自动化工具开源了!
  4. 走进springboot
  5. 系统编程-信号-信号发送kill、raise、alarm
  6. QT实现OPC_UA客户端程序以及与OPC_UA服务器通信
  7. day-03-基础数据类型
  8. Windows上Docker Toolbox修改镜像源
  9. OO第一单元作业——魔幻求导
  10. python基础(补充):python三大器之生成器