zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    C语言面向对象编程(五):单链表实现(转)
    pthread_barrier_init,pthread_barrier_wait简介(转)
    Linux信号(signal) 机制分析(转)
    Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知(转)
    Linux 多线程环境下 进程线程终止函数小结(转)
    批量杀进程 ps awk grep
    C++中的INL(转)
    gdb调试多进程和多线程命令(转)
    转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端
    转:全栈工程师的知识栈列表
  • 原文地址:https://www.cnblogs.com/kxm87/p/9273555.html
Copyright © 2011-2022 走看看