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. LeetCode3.无重复字符的最大子串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ...

  2. 查看电脑物理地址(MAC)方法

    首先打开电脑,按ctrl+R键,将会出现以下界面 然后直接点击确认即可,会出现管理员界面,如下 我们现在有两种查看MAC地址的方法: 方法一:.直接输入ipconfig/all(或者输入ipconfi ...

  3. 广告域名审核之后跳转技术:点击域名A页面iframe框架下的链接,域名A跳转到域名B

    广告域名审核之后跳转技术:点击域名A页面iframe框架下的链接,域名A跳转到域名B注:域名B为afish.cnblogs.com 域名A页面代码:<!DOCTYPE html PUBLIC & ...

  4. Python——缓冲区

    原创声明:本文系博主原创文章,转载及引用请注明出处. 1. 在Python中,字符串和整型对象都是不可变的(immutable)类型,因此Python会很高效地缓存它们. 2. Python2.3简单 ...

  5. UVa10474 Where is the Marble?(排序sort)

    今天开始学STL,这是书上的一道例题,主要是用了sort函数和lower_bound函数,挺容易理解的. lower_bound的作用是查找“大于或等于x的第一个位置”. 需要注意的是,不要忘记alg ...

  6. ssh客户端命令

  7. es实战之数据导出成csv文件

    从es将数据导出分两步: 查询大量数据 将数据生成文件并下载 本篇主要是将第二步,第一步在<es实战之查询大量数据>中已讲述. csv vs excel excel2003不能超过6553 ...

  8. 数据库中char和varchar的区别

    1. char类型的长度是固定的,varchar的长度是可变的. 这就表示,存储字符串'abc',使用char(10),表示存储的字符将占10个字节(包括7个空字符) 使用varchar2(10),, ...

  9. macOS Mojave 10.14上安装iTunes12.6

    将一下内容保存为iTunes.scpt,并运行 set question to display dialog "确定是否删除 iTunes ?" buttons {"Ye ...

  10. JS单线程和异步

    线程和单线程的概念: 线程:是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同 ...