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 (保存修改删除方法)的更多相关文章

  1. Spring Boot系列(三):Spring Boot整合Mybatis源码解析

    一.Mybatis回顾 1.MyBatis介绍 Mybatis是一个半ORM框架,它使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJOs(普通的Java 对象)映射成数据库中的记 ...

  2. Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇

    Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇 本文主要内容: 1:spring cloud整合Eureka总结 本文是由凯哥(凯哥Java:kagejava ...

  3. Hexo系列(四) NexT主题配置

    Hexo 框架允许我们更换合适的主题,以便于构建不同风格的网站,这里介绍目前最常使用的一款主题之一 -- NexT 一.NexT 安装 在正式开始讲解 NexT 安装之前,我们必须明确以下几个概念: ...

  4. Spring Boot 系列:日志动态配置详解

    世界上最快的捷径,就是脚踏实地,本文已收录架构技术专栏关注这个喜欢分享的地方. 开源项目: 分布式监控(Gitee GVP最有价值开源项目 ):https://gitee.com/sanjianket ...

  5. Spring Boot系列(四) Spring Boot 之验证

    这节没有高深的东西, 但有一些学习思路值得借鉴. JSR 303 (Bean Validation) Maven依赖 <dependency> <groupId>org.spr ...

  6. Spring Boot2 系列教程(二十六)Spring Boot 整合 Redis

    在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教 ...

  7. Spring Boot系列(一):Spring Boot快速开始

    一.Spring Boot介绍 Spring Boot可以很容易的创建可直接运行的独立的基于Spring的应用程序. 功能特点: 创建独立的Spring应用程序: 直接嵌入Tomcat.Jetty等W ...

  8. Spring Boot系列(二):Spring Boot自动装配原理解析

    一.Spring Boot整合第三方组件(Redis为例) 1.加依赖 <!--redis--> <dependency> <groupId>org.springf ...

  9. Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源

    本文是 Spring Boot 整合数据持久化方案的最后一篇,主要和大伙来聊聊 Spring Boot 整合 Jpa 多数据源问题.在 Spring Boot 整合JbdcTemplate 多数据源. ...

随机推荐

  1. LeetCode02 - 两数相加(Java 实现)

    LeetCode02 - 两数相加(Java 实现) 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/add-two-numbers 题目描述 ...

  2. Javascript设计模式之发布-订阅模式

    简介 发布-订阅模式又叫做观察者模式,他定义了一种一对多的依赖关系,即当一个对象的状态发生改变的时候,所有依赖他的对象都会得到通知. 回忆曾经 作为一名前端开发人员,给DOM节点绑定事件可是再频繁不过 ...

  3. pandas聚合和分组运算之groupby

    pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片.切块.摘要等操作.根据一个或多个键(可以是函数.数组或DataFrame列名)拆分pandas对象.计算分 ...

  4. guava的一些用法

    package guavaTest; import com.google.common.base.CharMatcher; import com.google.common.base.Joiner; ...

  5. Python3-json3csv

    import json import csv json_str = '[{"a":1,"b":"2","c":" ...

  6. Java-JDBCUtil工具类

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  7. inner join和left join

    查询所有商品(product),包含他的所有的评论(comment),包含评论下的user 要使用 SELECT  * FROM product p LEFT JOIN COMMENT c ON p. ...

  8. Maven - Maven Project与Maven Module区别和联系

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/J080624/article/detai ...

  9. mysql优化(上)

    磁盘组成  和  磁盘读取过程 尽量减少 i/o 操作. 表结构设计:(1)三范式 :   原子性(不可拆分).唯一性(不能有完全相同的数据).无冗余性(不能有多余的数据),对于冗余性说明一下:拿订单 ...

  10. CSS的水平居中和垂直居中

    水平居中如果不太熟悉盒子模型的话属实不太好理解,其实就是控制其他属性来让border之内的内容被控制在父容器中间就行了,最经典的就是使用{margin: 0  auto}了,控制其上下外边框为0,左右 ...