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") // 后端解决跨域;指定允许的来源
public class PersonController {@Autowiredprivate PersonService personService;/*** 查询用户,根据用户id查询单个用户信息** @param personId 用户id,如果方法中形参与路径传来形参名字一致,那么@PathVariable("id")可简写为@PathVariable,*                 此处为了演示,一般写一致(personId写为id)。* @return 返回json串,正常开发中应该返回查到的Person对象*/@GetMapping("/findPerson/{id}") //请求路径为 http://localhost:8081/api/findPerson/idpublic 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*/@DeleteMapping("deletePersonById")//请求路径为 http://localhost:8081/api/deletePersonById?id=xxxpublic 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 {@Autowiredprivate PersonMapper personMapper;@Overridepublic Person findPerson(String id) {return personMapper.findPerson(id);}@Overridepublic void addPerson(Person person) {personMapper.addPerson(person);}@Overridepublic void editPersonById(Person person) {personMapper.editPersonById(person);}@Overridepublic 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 mapperPUBLIC "-//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 personwhere 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 personset username   = #{username},password   = #{password},age        = #{age},order_time = #{orderTime}where id = #{id}</update><!--  删除  --><delete id="deletePersonById" parameterType="org.example.vue.pojo.Person">deletefrom personwhere id =#{id}</delete></mapper>

8.application.yml

server:port: 8081
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver #mysql5版本把.cj去掉,此处为mysql8.0url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai #test改成自己的数据库名username: rootpassword: "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 TransferSource Server         : localhostSource Server Type    : MySQLSource Server Version : 80033 (8.0.33)Source Host           : localhost:3306Source Schema         : testTarget Server Type    : MySQLTarget Server Version : 80033 (8.0.33)File Encoding         : 65001Date: 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终端提示错误

补充

service层和mapper层和上面类似。

1 查询所有

controller层

    /*** 查询所有* @return List集合*/@GetMapping("findAllPerson")public List<Person> findAllPerson(){return personService.findAllPerson();}

PersonMapper.xml

    <!--  查询所有 resultType 属性指定了查询结果的类型,这里为 Person,表示每一行记录都会映射到一个 Person 对象 --><select id="findAllPerson" resultType="org.example.vue.pojo.Person">select *from person</select>

 Postman准备

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

2 新增多个

 controller层

    /*** 一次插入多条记录* @param personList 用一个List集合接收*/@PostMapping("/addPersonList")public void addPersonList(@RequestBody List<Person> personList){System.out.println("controller:"+personList);personService.addPersonList(personList);}

PersonMapper.xml

    <!--  插入List集合  --><insert id="addPersonList" parameterType="java.util.List">insert into person(username, password, age, order_time)values<foreach collection="personList" item="person" separator=",">(#{person.username}, #{person.password}, #{person.age}, #{person.orderTime})</foreach></insert>

 Postman准备

 请求方式:Post               请求路径:http://localhost:8081/api/addPersonList

传递数据:

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12_Scala_package

文章目录 Scaal面向对象编程1.回顾Java2.package可以多次声明3.设置作用域&#xff0c;设置上下级4.包可以当作对象使用5.import6.Scala用_取代Java *7.导入多个包8.屏蔽类9.类起别名10.import的规则11.有些包无需导入 Scaal面向对象编程 Scala是一门完全面向对象语言&#xf…

Linux的权限管理

文章目录 文件权限文件类型文件访问者的分类文件权限的类型 文件访问权限的设置目录的权限 文件权限 对于每个LInux文件&#xff0c;如果用ll指令查看的话&#xff0c;可以发现每个文件前面都有一串类似的字符&#xff1a; 这里总共有十个字符&#xff0c;其中第一个字符表示…

QT httpServer多线程后台服务器的例子实现

1.需求 1.1 用户需要其他平台&#xff08;web端&#xff09;调用Qt平台的接口&#xff0c;获取想要的数据并实时显示在网页里&#xff0c;比如实时的温湿度&#xff0c;用户数据等 1.2 用户需要在其他平台&#xff08;web端&#xff09;调用Qt平台的接口&#xff0c;下发数据…

贝叶斯统计实战:Python引领的现代数据分析之旅

贝叶斯统计这个名字取自长老会牧师兼业余数学家托马斯贝叶斯(Thomas Bayes&#xff0c;1702—1761)&#xff0c;他最先推导出了贝叶斯定理&#xff0c;该定理于其逝世后的1763年发表。但真正开发贝叶斯方法的第一人是Pierre-Simon Laplace(1749—1827)&#xff0c;因此将其称为…

Copilot Venture Studio創始合伙人楊林苑確認出席“邊緣智能2024 - AI開發者峰會”

隨著AI技術的迅猛發展&#xff0c;全球正逐步進入邊緣計算智能化與分布式AI深度融合的新時代&#xff0c;共同書寫著分布式智能創新應用的壯麗篇章。邊緣智能&#xff0c;作為融合邊緣計算和智能技術的新興領域&#xff0c;正逐漸成為推動AI發展的關鍵力量。借助分布式和去中心…

Messari 报告摘要 :Covalent Network(CQT)2024 年第一季度表现

摘要&#xff1a; 尽管 CQT 代币流通供应量增加了 20%&#xff08;新增 1.04 亿枚 CQT&#xff09;&#xff0c;但 CQT 的质押百分比仅从 2023 年第一季度的 22% 增长到了 2024 年第一季度的 29%。 CQT 的市值季度环比增长了 28%&#xff0c;多次达到 2.75 亿美元&#xff0c…

分享三款可以给pdf做批注的软件

PDF文件不像Word一样可以直接编辑更改&#xff0c;想要在PDF文件上进行编辑批注需要用到一些专业的软件&#xff0c;我自己常用的有三款&#xff0c;全都是官方专业正版的软件&#xff0c;功能丰富强大&#xff0c;使用起来非常方便&#xff01; 1.edge浏览器 这个浏览器不仅可…

van-cascader(vant2)异步加载的bug

问题描述&#xff1a;由于一次性返回所有的级联数据的话&#xff0c;数据量太大&#xff0c;接口响应时间太久&#xff0c;因此采用了异步加载的方案&#xff0c;看了vant的官方示例代码&#xff0c;照着改了下&#xff0c;很轻松地实现了功能。正当我感叹世界如此美好的时候&a…

2.2 Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3-基础-Vue基本语法

文本渲染指令 文本渲染指令-v-html与v-text Vue使用了基于HTML的模板语法&#xff0c;允许开发者声明式地将DOM绑定至底层Vue实例的数据。所有Vue的模板都是 合法的HTML&#xff0c;所以能被遵循规范的浏览器和HTML解析器解析。 在前面&#xff0c;我们一直使用的是字符串插…

Flutter - 折叠面板

demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新&#xff0c;请前往github查看最新代码 flutter 自定义折叠组件 支持三种类型和两种展示效果可自定义title和被折叠的内容 效果图 示例 import package:flutter/material.dart; import /jh_common/widge…

springboot+websocket开发简单的在线群聊聊天web版本

springbootwebsocket开发简单的在线群聊聊天web版本&#xff01;近期在测试websocket插件的群聊功能。下面是一个简单的demo。分享给大家&#xff0c;亲测可以使用的。 1&#xff1a;首先是一个chat.html页面。代码如下&#xff1a; <!DOCTYPE html> <html lang"…

Linux的Shell脚本详解

本文目录 一、什么是 Shell 脚本文件 &#xff1f;二、编写Shell脚本1. 基本规则2. shell 变量&#xff08;1&#xff09;创建变量&#xff08;2&#xff09;引用变量&#xff08;3&#xff09;删除变量&#xff08;4&#xff09;从键盘读取变量&#xff08;5&#xff09;特殊变…

VMware安装ubuntun虚拟机使用桥接模式无法上网问题解决

问题&#xff1a;最近准备使用VMware虚拟机搭建k8s集群服务&#xff0c;因为需要在同一个网段下&#xff0c;我使用桥接的方式&#xff0c;我发现主机在使用有线连接时虚拟机网络连接正常&#xff0c;但是使用无线网就显示连接不上网络。 解决方法 一、查看网络连接&#xff…

MFC 列表控件删除实例(源码下载)

1、本程序基于前期我的博客文章《MFC下拉菜单打钩图标存取实例&#xff08;源码下载) 》 2、程序功能选中列表控件某一项&#xff0c;删除按钮由禁止变为可用&#xff0c;点击删除按钮&#xff0c;选中的项将删除。 3、首先在主界面添加一个删除参数按钮。 4、在myDlg.cpp 文件…

蓝桥杯练习系统(算法训练)ALGO-951 预备爷的悲剧

资源限制 内存限制&#xff1a;512.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 英语预备爷gzp是个逗(tu)比(hao)&#xff0c;为了在即将到来的英语的quiz中不挂科&#xff0c;gzp废寝忘食复习英语附录单词…

基于缓存注解的时间戳令牌防重复提交设计

文章目录 一&#xff0c;概述二&#xff0c;实现过程1、引入pom依赖2、定义缓存管理3、时间戳服务类4、模拟测试接口 三&#xff0c;测试过程1&#xff0c; 模拟批量获取2&#xff0c; 消费令牌 四&#xff0c;源码放送五&#xff0c;优化方向 一&#xff0c;概述 API接口由于…

PHP源码_最新Ai对话系统网站源码 ChatGPT+搭建教程+前后端

基于ChatGPT开发的一个人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样来聊天交流&#xff0c;甚至能完成撰写邮件、视频脚本、文案、翻译、代码&#xff0c;写论…

C++Day6作业

1、模板实现顺序栈 #include <iostream>using namespace std;template <typename T> class Stack {T* S; //数组int size;//栈容量int top; //栈顶元素下标 public://有参构造Stack(int size):S(new T[size]),size(size),top(-1){}//初始化时直接将栈顶元素下标设…

记一次古董级netapp存储更换故障硬盘全过程

1、案例背景 记一次某医院PACS存储NetApp FAS2554更换故障硬盘的过程。 这个netapp设备以前从未调试过&#xff0c;据客户说该设备上线也有快9年了&#xff0c;头一次故障硬盘。因为己经过保了&#xff0c;客户只是采购的硬盘&#xff0c;我这来免费服务了。。。 netapp调试…

LeetCode 110.平衡二叉树(Java/C/Python3/Go实现含注释说明,Easy)

标签 树深度优先搜索递归 题目描述 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡的二叉树定义为&#xff1a; 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 原题&#xff1a;LeetCode 110.平衡二叉树 思路及…