spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)
spring boot 使用jpa在pom.xml在上文中已经介绍过。在这里直接介绍各个类文件如何编写:
代码结构:
domain(存放实体类文件);
repository(存放数据库操作文件,相当于dao层)
service(存放逻辑层service文件)
web(存放控制类相当于control层)
如下图:

注意:测试的时候用http工具测试比如postman,浏览器有时候不支持在地址栏上面使用post put这些请求方式
一 保存(insert)方法
1 创建UserInfo实体类,代码如下:
package com.cfj.ceshi.jpa.domain; import java.io.Serializable; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name="user_info")
public class UserInfo implements Serializable { private static final long serialVersionUID = 1L; @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String userName;
private String age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "UserInfo [id=" + id + ", userName=" + userName + ", age=" + age + "]";
} }
2 创建数据库操作类相当于dao层,主要创建一个接口UserRepository,继承JpaRepository接口即可。如果只是不同的保存方法接口中不用写什么。本文写了一个查询方法,用于查询用,代码如下:
package com.cfj.ceshi.jpa.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.cfj.ceshi.jpa.domain.UserInfo;
public interface UserRepository extends JpaRepository<UserInfo, Integer> {
UserInfo findByUserName(String userName);
}
3 创建service接口和它的实现类,代码如下:
package com.cfj.ceshi.jpa.service;
import com.cfj.ceshi.jpa.domain.UserInfo;
public interface UserService {
public Integer save(UserInfo user);
public void delete(Integer id);
}
package com.cfj.ceshi.jpa.service.impl; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import com.cfj.ceshi.jpa.domain.UserInfo;
import com.cfj.ceshi.jpa.repository.UserRepository;
import com.cfj.ceshi.jpa.service.UserService; @Service
@Transactional
public class UserServiceImpl implements UserService{ @Autowired
private UserRepository userRepository; @Override
public Integer save(UserInfo user) {
return userRepository.save(user).getId();
} @Override
public void delete(Integer id) {
userRepository.delete(id);
} }
4 创建控制类(controller)在spring boot 里面用web包表示,代码如下:
package com.cfj.ceshi.jpa.web; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.cfj.ceshi.jpa.domain.UserInfo;
import com.cfj.ceshi.jpa.service.UserService; @RestController
@RequestMapping("/user")
public class UserWeb { @Autowired
private UserService userService; @RequestMapping("/save")
public String save() {
/*
* 测试最普通的方法 调用http://localhost:8081/user/save
* 则想数据库插入一条数据,姓名是张三 年龄是20
*/
UserInfo user = new UserInfo();
user.setUserName("张三");
user.setAge("20");
return userService.save(user).toString(); } //以下postOne 和postTwo 方法 主要用于post请求,一般新增方法用post方式 /**
* 请使用 postman测试 方式选择post http://localhost:8081/user/save-one
* body 中选择form-data 或者x-wwww-form-urlencoded 输入对应键值对
* @param name
* @param age
* @return
*/
@PostMapping(value = "/save-one") //相当于@RequestMapping(value = "/save-one", method = RequestMethod.POST)
public String postOne(String name,String age) {
UserInfo user = new UserInfo();
user.setUserName(name);
user.setAge(age);
return userService.save(user).toString(); } /**
* 请使用 postman测试 方式选择post http://localhost:8081/user/save-one
* body 中选择raw 并选择JSON(application/json) 传入json格式
* @param user
* @return
*/
@PostMapping(value = "/save-two") //相当于@RequestMapping(value = "/save-one", method = RequestMethod.POST)
public String postTwo(@RequestBody UserInfo user) {
return userService.save(user).toString(); } }
5 使用postman工具测试save-one和save-two
- save-one测试如下:

- save-two测试如下:

二 修改(update)方法
1 一般修改方法用put方式提交,在上面的UserWeb类中添加如下代码:
//以下两个方法是put的方式 用于修改数据
/**
* 访问http://localhost:8081/user/update-one
* body 选择x-wwwww-form-urlenable 输入对应key 和value
* @param id
* @param name
* @param age
* @return
*/
@PutMapping(value = "/update-one")//相当于@RequestMapping(value = "/update-one", method = RequestMethod.PUT)
public String putOne(Integer id,String name,String age) {
UserInfo user = new UserInfo();
user.setId(id);
user.setUserName(name);
user.setAge(age);
return userService.save(user).toString();
}
/**
* http://localhost:8081/user/update-two
* body 中选择raw 并选择JSON(application/json) 传入json格式
* @param user
* @return
*/
@PutMapping(value = "/update-two")//相当于@RequestMapping(value = "/update-two", method = RequestMethod.PUT)
public String putTwo(@RequestBody UserInfo user) {
return userService.save(user).toString();
}
2 测试结果:
- update-one测试如下:

- update-two测试如下:

三 删除(delete)方法
在上面的UserWeb类中添加如下代码:
/**
* http://localhost:8081/user/update-two
* body 中选择raw 并选择JSON(application/json) 传入json格式
* @param user
* @return
*/
@PutMapping(value = "/update-two")//相当于@RequestMapping(value = "/update-two", method = RequestMethod.PUT)
public String putTwo(@RequestBody UserInfo user) {
return userService.save(user).toString(); } /**
* 删除方法
* @param id
*/
/*@DeleteMapping(value = "/delete")
public void delete(Integer id) { userService.delete(id);
}*/
/**
* 删除方法 postman 中选择 DELETE方式 http://localhost:8081/user/delete/1
* 将删除主键是1的记录
* @param id
*/
@DeleteMapping(value = "/delete/{id}")
public void deleteOne(@PathVariable Integer id) { userService.delete(id);
}
本项目码云地址:
https://gitee.com/kaixinmao/jpa_lianxi/tree/master/jpa
spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)的更多相关文章
- Spring Boot系列(三):Spring Boot整合Mybatis源码解析
一.Mybatis回顾 1.MyBatis介绍 Mybatis是一个半ORM框架,它使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJOs(普通的Java 对象)映射成数据库中的记 ...
- Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇
Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇 本文主要内容: 1:spring cloud整合Eureka总结 本文是由凯哥(凯哥Java:kagejava ...
- Hexo系列(四) NexT主题配置
Hexo 框架允许我们更换合适的主题,以便于构建不同风格的网站,这里介绍目前最常使用的一款主题之一 -- NexT 一.NexT 安装 在正式开始讲解 NexT 安装之前,我们必须明确以下几个概念: ...
- Spring Boot 系列:日志动态配置详解
世界上最快的捷径,就是脚踏实地,本文已收录架构技术专栏关注这个喜欢分享的地方. 开源项目: 分布式监控(Gitee GVP最有价值开源项目 ):https://gitee.com/sanjianket ...
- Spring Boot系列(四) Spring Boot 之验证
这节没有高深的东西, 但有一些学习思路值得借鉴. JSR 303 (Bean Validation) Maven依赖 <dependency> <groupId>org.spr ...
- Spring Boot2 系列教程(二十六)Spring Boot 整合 Redis
在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教 ...
- Spring Boot系列(一):Spring Boot快速开始
一.Spring Boot介绍 Spring Boot可以很容易的创建可直接运行的独立的基于Spring的应用程序. 功能特点: 创建独立的Spring应用程序: 直接嵌入Tomcat.Jetty等W ...
- Spring Boot系列(二):Spring Boot自动装配原理解析
一.Spring Boot整合第三方组件(Redis为例) 1.加依赖 <!--redis--> <dependency> <groupId>org.springf ...
- Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源
本文是 Spring Boot 整合数据持久化方案的最后一篇,主要和大伙来聊聊 Spring Boot 整合 Jpa 多数据源问题.在 Spring Boot 整合JbdcTemplate 多数据源. ...
随机推荐
- 卸载CUDA和cuDNN
卸载CUDA和cuDNN 1.卸载CUDA 本教程只针对对于.run方式安装的,其他的没有进行测试 打开终端,输入sudo /usr/local/cuda-10.0/bin/uninstall_cud ...
- PAT乙级1024
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168 题解 第一遍也是没有全部AC,有3 ...
- swiper 使用心得
首先,我在这次学习的最大收益是,学习新框架.或者技术,先找官方文档比较好,那里的很全,你想要的基本都有的,如果没有那就是不支持喽. 然后简单概括下是怎么用的(比较谦虚,大家勿怪) 一 .找他的官方文档 ...
- POJ - 1185 炮兵阵地 (插头dp)
题目链接 明明是道状压dp的题我为啥非要用插头dp乱搞啊 逐行枚举,设dp[i][S]为枚举到第i个格子时,状态为S的情况.S为当前行上的“插头”状态,每两个二进制位表示一个格子,设当前格子为(x,y ...
- 微信小程序aes前后端加密解密交互
aes前后端加密解密交互 小程序端 1. 首先引入aes.js /** * [description] CryptoJS v3.1.2 * [description] zhuangzhudada so ...
- tomcat启动失败_严重: A child container failed during start
错误信息代码: 严重: A child container failed during start java.util.concurrent.ExecutionException: org.apach ...
- Java-JDBCUtil工具类
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
- javaScript--for循环的性能提升
//为什么性能提升? //第一种写法每次循环时都需要从内存中取出students.length并判断条件是否成立 //第二种写法只需要取一次students.length就可以 //第二种方式弊端:l ...
- vs2015显示代码行数
打开visual studio 2015,在菜单中点击“工具” --> "选项" -->“文本编辑器” --> "所有语言" -->勾选 ...
- 适合没有ui的项目的样式
官网: https://www.tailwindcss.cn/