当前位置:   article > 正文

毕业设计Day5--Springboot实现增删改查_springboot增删改

springboot增删改

写在前面

Controller是控制器,负责接收并处理客户端请求,并返回结果。(用注释如GetMapping、PostMapping、DeleteMapping等,利用mapper、service类写函数)
Service是服务,负责业务逻辑处理。(利用mapper写函数,比controller有逻辑)
Mapper是映射器,负责将数据从数据库映射到应用程序中,或者将应用程序中的数据映射到数据库中。(基于注解写SQL语句)

@RequestMapping

统一给注解加前缀,如下
在这里插入图片描述

此时直接访问9090端口无法访问,需要在网址后加"/user/"才能正常访问到页面,如图

在这里插入图片描述

@RequestBody

可以把前台传来的json对象转换成后台的Java对象

数据库插入

在Mapper类中定义接口函数
在这里插入图片描述

控制类中往往使用Post方法

在这里插入图片描述

数据库删除

deleteMapping中的字符需要与形参中的id 一 一 对 应!不能写错

在这里插入图片描述

Mapper中对应部分
其中1和2对应名称必须相同,3可以有不同

在这里插入图片描述

测试(用postman)
即把id为3的数据成功删除
在这里插入图片描述

Postman测试接口

打开postman,点击加号

在这里插入图片描述

选择post,输入url,输入信息,点击send
在这里插入图片描述

即可出现一条数据被修改

在这里插入图片描述

数据库中即可查询到刚添加的数据信息

在这里插入图片描述

Service层

@Service

把service类注入到spring容器中
在这里插入图片描述

为了方便一块实现修改和添加,可以用id判断是否存在该数据,没有的话选择添加操作,有的话选择修改操作

代码如下,其中插入操作对应UserMapper类中的insert,修改操作对应下面的动态SQL语句

package com.ww.car.service;

import com.ww.car.entity.User;
import com.ww.car.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public int save(User user){
        if(user.getId()==null){ //没有id,则新增
            return userMapper.insert(user);
        }else{  //  有id,则修改
            return userMapper.update(user);
        }
    }


}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

动态SQL

在resource中新增文件夹mapper,在其中新建User.xml,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ww.car.mapper.UserMapper">
    <update id="update">
        update sys_user
        <set>
            <if test="username != null">
                username = #{username},
            </if>
<!--            <if test="password != null">-->
<!--                password = #{password},-->
<!--            </if>-->
            <if test="nickname != null">
                nickname = #{nickname},
            </if>
            <if test="email != null">
                email = #{email},
            </if>
            <if test="phone != null">
                phone = #{phone},
            </if>
            <if test="address != null">
                address = #{address},
            </if>
        </set>
        <where>
            id = #{id}
        </where>

    </update>

</mapper>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

设置可选择的set
即只有username(或其他属性)不为空时才会执行赋值语句

其中的namespace部分可依据下图步骤复制

在这里插入图片描述
在这里插入图片描述

update中的id必须要跟mapper中的函数名保持一致

在这里插入图片描述
(Mapper中函数)
在这里插入图片描述

用Postman测试,报错500
在这里插入图片描述

报错500解决办法

在yml文件中加上mapper配置即可

在这里插入图片描述
全部代码
UserMapper

package com.ww.car.mapper;

import com.ww.car.entity.User;
import org.apache.ibatis.annotations.*;


import java.util.List;

@Mapper
public interface UserMapper {

    @Select("select * from sys_user")
    List<User> findAll();

    @Insert("insert into sys_user(username,password,nickname,email,phone,address) values(#{username},#{password}," +
            "#{nickname},#{email},#{phone},#{address})")
    public Integer insert(User user);


    int update(User user);

    @Delete("delete from sys_user where id = #{id}")
    Integer deleteById(@Param("id") Integer id);

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

UserService

package com.ww.car.service;

import com.ww.car.entity.User;
import com.ww.car.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public int save(User user){
        if(user.getId()==null){ //没有id,则新增
            return userMapper.insert(user);
        }else{  //  有id,则修改
            return userMapper.update(user);
        }
    }


}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

UserController

package com.ww.car.controller;

import com.ww.car.entity.User;
import com.ww.car.mapper.UserMapper;
import com.ww.car.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @Autowired
    private UserService userService;

    //新增&修改
    @PostMapping
    public  Integer save(@RequestBody User user){
        //新增或更新均可
        return userService.save(user);
    }

    //查询所有数据
    @GetMapping("/")
    public List<User> index(){

        List<User> all=userMapper.findAll();
        return all;
    }

    //删除数据
    @DeleteMapping("/{id}")
    public Integer delete(@PathVariable Integer id){
        return userMapper.deleteById(id);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

User

package com.ww.car.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor

public class User {
    private Integer id;
    private String username;
    private String password;
    private String nickname;
    private String email;
    private String phone;
    private String address;


}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

application.yml

#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件
mybatis:
  mapper-locations: classpath:mapper/*.xml
#指定Mybatis的实体目录
  type-aliases-package: com.ww.car.mybatis.entity
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 应用服务 WEB 访问端口
server:
  port: 9090
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/car?servertimezone=GMT%2b8
    username: root
    password: 123456


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/576690
推荐阅读
相关标签
  

闽ICP备14008679号