Springboot+mybatis升级版(Postman测试)

一、项目结构

1.导入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>vue-service</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-parent</artifactId>
        <version>2.0.3.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--实体类-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--JSON转换-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.83</version>
        </dependency>
        <!--mybatis的springboot支持-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>

    </dependencies>
</project>

2.Controller层

package org.example.vue.controller;

import com.alibaba.fastjson.JSON;
import org.example.vue.pojo.Person;
import org.example.vue.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://127.0.0.1:5500") // 后端解决跨域;指定允许的来源,如果不行的话打开config配置文件
public class PersonController {

    @Autowired
    private PersonService personService;

    /**
     * 查询用户,根据用户id查询单个用户信息
     *
     * @param personId 用户id,传参方式为query。如果方法中形参与路径传来形参名字一致,那么@PathVariable("id")可简写为@PathVariable,
     *                 此处为了演示,一般写一致(personId写为id)。
     * @return 返回json串,正常开发中应该返回查到的Person对象
     */
    @GetMapping("/findPerson/{id}") //请求路径为 http://localhost:8081/api/findPerson/id
    public String findPerson(@PathVariable("id") String personId) {
        Person person = personService.findPerson(personId);
        return JSON.toJSONString(person);   //将对象转为json字符串
    }

    /**
     * 添加用户,前端传来json对象,后端用对象接收
     *
     * @param person Person实体类
     */
    @PostMapping("/addPerson")
    public void addPerson(@RequestBody Person person) {
        personService.addPerson(person);
    }

    /**
     * 修改用户,根据用户id修改,注意id必须是数据库中存在,实际开发中不会有该问题
     *
     * @param person Person实体类
     */
    @PutMapping("/editPersonById")
    public void editPersonById(@RequestBody Person person) {
        personService.editPersonById(person);
    }

    /**
     * 删除用户,根据用户id删除
     * @param id 用户id,传参方式为params。
     */
    @DeleteMapping("deletePersonById")//请求路径为 http://localhost:8081/api/deletePersonById?id=xxx
    public void deletePersonById(@RequestParam Integer id) {
        personService.deletePersonById(id);
    }

}

3.mapper层

package org.example.vue.mapper;

import org.example.vue.pojo.Person;

public interface PersonMapper {

    Person findPerson(String id);

    void addPerson(Person person);

    void editPersonById(Person person);

    void deletePersonById(Integer id);

}

4.pojo实体类

package org.example.vue.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person implements Serializable { //实现序列化接口(对象的状态 <==> 字节序列)

    private Integer id;
    private String username;
    private String password;
    private Integer age;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 指定日期格式
    private Date orderTime;


}

5.service层

PersonService接口

package org.example.vue.service;

import org.example.vue.pojo.Person;

public interface PersonService {
    Person findPerson(String id);

    void addPerson(Person person);

    void editPersonById(Person person);

    void deletePersonById(Integer id);

}

 PersonService实现类

package org.example.vue.service;

import org.example.vue.mapper.PersonMapper;
import org.example.vue.pojo.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class PersonServiceImp implements PersonService {
    @Autowired
    private PersonMapper personMapper;
    @Override
    public Person findPerson(String id) {
        return personMapper.findPerson(id);
    }

    @Override
    public void addPerson(Person person) {
        personMapper.addPerson(person);
    }

    @Override
    public void editPersonById(Person person) {
        personMapper.editPersonById(person);
    }

    @Override
    public void deletePersonById(Integer id) {
        personMapper.deletePersonById(id);
    }
}

6.启动类

package org.example.vue;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("org.example.vue.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

7.PersonMapper.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="org.example.vue.mapper.PersonMapper">
    <!--  查询  -->
    <select id="findPerson" resultType="org.example.vue.pojo.Person">
        select *
        from person
        where id = #{id}
    </select>
    <!--  新增  -->
    <insert id="addPerson" parameterType="org.example.vue.pojo.Person">
        INSERT INTO person (username, password, age, order_time)
        VALUES (#{username}, #{password}, #{age}, #{orderTime})
    </insert>

    <!--  修改  -->
    <update id="editPersonById" parameterType="org.example.vue.pojo.Person">
        update person
        set username   = #{username},
            password   = #{password},
            age        = #{age},
            order_time = #{orderTime}
        where id = #{id}
    </update>

    <!--  删除  -->
    <delete id="deletePersonById" parameterType="org.example.vue.pojo.Person">
        delete
        from person
        where id =
              #{id}
    </delete>

</mapper>

8.application.yml

server:
  port: 8081
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver #mysql5版本把.cj去掉,此处为mysql8.0
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai #test改成自己的数据库名
    username: root
    password: "123456"

mybatis:
  mapper-locations: classpath:mybatis/*.xml
  #目的是为了省略resultType里的代码量,可不加
#  type-aliases-package: com.example.pojo
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

二、Sql

/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 80033 (8.0.33)
 Source Host           : localhost:3306
 Source Schema         : test

 Target Server Type    : MySQL
 Target Server Version : 80033 (8.0.33)
 File Encoding         : 65001

 Date: 29/04/2024 18:21:33
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for person
-- ----------------------------
DROP TABLE IF EXISTS `person`;
CREATE TABLE `person`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `age` int NULL DEFAULT NULL,
  `order_time` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of person
-- ----------------------------
INSERT INTO `person` VALUES (1, '李白', '123', 18, '2024-04-29 15:06:30');
INSERT INTO `person` VALUES (2, '张飞', '123456', 18, '2024-04-16 23:06:30');
INSERT INTO `person` VALUES (3, '张飞修改', '122222', 20, '2024-04-03 01:06:30');
INSERT INTO `person` VALUES (4, '朵朵', '123456', 18, '2024-04-26 23:06:30');

SET FOREIGN_KEY_CHECKS = 1;

三、Postman准备

postman准备

创建-Collections

创建请求-Request

请求介绍

1 查询:

请求方式:Get        请求路径:http://localhost:8081/api/findPerson/1

2 新增:

请求方式:Post       请求路径:http://localhost:8081/api/findPerson/1http://localhost:8081/api/addPerson

传递数据:

{
    "username": "优雅",
    "password": "12345",
    "age": 18,
    "orderTime": "2024-04-26 15:06:30"
}

http://localhost:8081/api/findPerson/1

3 编辑:

请求方式:Put                请求路径:http://localhost:8081/api/editPersonById

4 删除:

请求方式:DELETE        请求路径:http://localhost:8081/api/deletePersonById?id=5

测试

点击Send访问后端,测试,如出错可观察postman、java终端提示错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/582911.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高级数据结构与算法期中测试题

一、判断题 1、In dynamic programming algorithms, some results of subproblems have to be stored even they do not compose the optimal solution of a larger problem. T F 解析:T。在动态规划算法中,必须存储子问题的某些结果,因为他们可能需要用来…

区块链技术:NFG元宇宙电商模式

大家好&#xff0c;我是微三云周丽 随着互联网技术的迅猛发展&#xff0c;电子商务行业逐渐崛起为现代经济的重要支柱。而在这一浪潮中&#xff0c;元宇宙电商以其独特的商业模式和巨大的发展潜力&#xff0c;成为行业的新宠。其中&#xff0c;NFG作为元宇宙电商模式的代表&am…

【4110】基于小程序实现的名片管理系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

std::ignore的定义

有个全局变量。 把一个变量赋值给ignore&#xff0c;还行&#xff0c;没有拷贝等动作&#xff0c;不用担心性能损失。 VS2017D:\DevTools\VS2017\VC\Tools\MSVC\14.16.27023\include\tuple// STRUCT _Ignore struct _Ignore{ // struct that ignores assignmentstemplate<…

如何利用 GPT 自我提高写作能力

GPT革命&#xff1a;如何用AI技术重新定义写作 介绍 在我们的数字时代&#xff0c;了解自我提高写作的必要性至关重要。 随着 GPT 的兴起&#xff0c;我们正在见证书写的变革时代。 这篇扩展文章深入探讨了 GPT 如何显着提高写作技能。 拥抱未来&#xff1a; 人工智能时代的写…

Oracle 数据迁移同步优化(三)

简述 CloudCanal 最近再次对其 Oracle 源端数据同步进行了一系列优化&#xff0c;这些优化基于用户在真实场景中的反馈&#xff0c;具备很强的生产级别参考意义。 本文将简要介绍这些优化项&#xff0c;希望带给读者一些收获。 增量事件 SCN 乱序问题MISSING_SCN 事件干扰新…

物联网和互联网有什么区别?从多个方面进行探讨——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网和互联网是现代信息技术的两大重要领域&#xff0c;它们在许多方面有着紧密的联系&#xff0c;但也有着明显的区别。本文将从多个方面对物联网和互联网的区别进行探讨。 首先&#xff0c;从定义上来看&#xff0c;互联网是一种全球…

38.WEB渗透测试-信息收集-信息收集-企业信息收集(5)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;37.WEB渗透测试-信息收集-企业信息收集&#xff08;4&#xff09; 上个内容用到了cdn&am…

【赠书活动第3期】《PyTorch 2.0深度学习从零开始学》

1. 赠书活动 《PyTorch 2.0深度学习从零开始学》免费赠书 5 本&#xff0c; 可在本帖评论中简单评论一下本书的优缺点&#xff0c; 或者在本帖评论中简单写一下你学习PyTorch想要达到什么目的&#xff0c; 博主从本帖评论中写得较好的朋友中选5人赠送。 截止日期为2024年5…

leetcode-有效括号序列-94

题目要求 思路 1.使用栈的先进后出的思路&#xff0c;存储前括号&#xff0c;如果st中有对应的后括号与之匹配就说明没问题 2.有两个特殊情况就是字符串第一个就是后括号&#xff0c;这个情况本身就是不匹配的&#xff0c;还有一种是前面的n个字符串本身是匹配的&#xff0c;这…

vue3插槽的name和v-slot的研究

slot可以分为具名插槽和默认,默认插槽name是default 在父组件的template需要些v-slot/#,没写不生效,而在父组件下,而没被template包含的默认放在template且含有#default. 1)没写slot,可以不写template,也可写default的template2)写了name的slot,即使是default也必须些template…

内外网隔离后 内网文件如何导出?

将内外网进行网络隔离后&#xff0c;内网文件如何导出&#xff1f;怎样确保安全的前提下&#xff0c;不影响业务的正常开展&#xff1f;这时候企业就需要采取安全且合规的方法来确保数据的安全性和防止未授权访问。 企业会采用的传统流程是&#xff1a;当文件由内网导出至外部时…

javaWeb项目-校园志愿者管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、SpringBoot框架 …

书生·浦语 大模型(学习笔记-8)Lagent AgentLego 智能体应用搭建

目录 一、智能体出现的原因 二、智能体的定义 三、智能体的组成 四、Lagent 五、AgentLego 六、实战一&#xff08;Lagent&#xff09; 环境配置及安装 安装依赖 准备 Tutorial Lagent Web Demo AgentLego 使用 图片推理&#xff08;结果&#xff09;&#xff1a; …

Linux下启动jenkins报错问题解决

jenkins端口报错 java.io.IOException: Failed to start Jettyat winstone.Launcher.<init>(Launcher.java:209)at winstone.Launcher.main(Launcher.java:496)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.int…

数据仓库实验二:关联规则挖掘实验

目录 一、实验目的二、实验内容和要求三、实验步骤1、创建数据库和表2、挖掘关联规则&#xff08;1&#xff09;新建一个 Analysis Services 项目 Sales&#xff08;2&#xff09;建立数据源视图&#xff08;3&#xff09;建立挖掘结构 Sales.dmm&#xff08;4&#xff09;部署…

(学习日记)2024.05.09:UCOSIII第六十三节:常用的结构体(os.h文件)第二部分

之前的章节都是针对某个或某些知识点进行的专项讲解&#xff0c;重点在功能和代码解释。 回到最初开始学μC/OS-III系统时&#xff0c;当时就定下了一个目标&#xff0c;不仅要读懂&#xff0c;还要读透&#xff0c;改造成更适合中国宝宝体质的使用方式。在学完野火的教程后&a…

Docker有哪些常见命令?什么是Docker数据卷?

喜欢就点击上方关注我们吧&#xff01; 哈喽&#xff0c;大家好呀&#xff01;这里是码农后端。上一篇我们介绍了Docker的安装以及腾讯云镜像加速源的配置。本篇将带你学习Docker的常见命令、数据卷及自定义镜像等相关知识。 1、什么是镜像与容器&#xff1f; 利用Docker安装应…

HarmonyOS编程实践系列:第一节 - 创建健康App欢迎页

系列文章目录 &#xff08;零&#xff09;鸿蒙HarmonyOS入门&#xff1a;如何配置环境&#xff0c;输出“Hello World“ &#xff08;一&#xff09;鸿蒙HarmonyOS开发基础 &#xff08;二&#xff09;鸿蒙HarmonyOS主力开发语言ArkTS-基本语法 &#xff08;三&#xff09;鸿蒙…

Web3的可持续性:构建环境友好的去中心化系统

引言 随着全球对可持续发展和环境问题的日益关注&#xff0c;Web3技术作为一种新型的互联网模式&#xff0c;也开始受到社区和开发者的关注。但很少有人关注到Web3对环境可持续性的潜在影响。本文将探讨Web3如何构建一个环境友好的去中心化系统&#xff0c;以及这如何促进一个…
最新文章