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

原文地址:https://www.cnblogs.com/kxm87/p/9273555.html