SpringBoot+MyBatis flex实现简单增删改查

一:创建SpringBoot项目

SpringBoot版本选择2.7.15

勾选相关的选项,并点击Create

项目创建完成

二.pom文件添加相关的依赖

<dependencies><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency><dependency><groupId>com.mybatis-flex</groupId><artifactId>mybatis-flex-spring-boot-starter</artifactId><version>1.6.4</version></dependency><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId></dependency> 

添加之后并且刷新依赖 

然后在mysql的依赖处加入版本号(8.0.33),并刷新依赖

不加的话在运行过程中可能会报错

将Springboot的版本更改为2.5.0,并刷新依赖

三.创建实体类entity(student)

实体类的属性有: id   name   gender  garde  score

package com.example.entity;import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Table("student")
public class Student {@Id(keyType=KeyType.Auto)private long id;private String name;private String gender;private String grade;private int score;
}

注意:

1. 加入相关的注解

2.主键要自增

3.@Id(keyType = KeyType.Auto)书写的时候需要注意第一个k是小写的,第二个k是大写

4. @Table("student")中的student即为我们创建的数据表的表名

四.创建数据表(student)

创建表之后,并加入了 一条学生信息进去

五.创建mapper接口文件

启动类函数添加扫描注解(@MapperScan(""))

其中com.example.mapper为mapper包文件所在的路径4

六.创建sevice层

七.创建实现类

package com.example.service.Impl;import com.example.entity.Student;
import com.example.mapper.StudentMapper;
import com.example.service.IStudentService;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class IStudentServiceImpl extends ServiceImpl<StudentMapper , Student> implements IStudentService {@Autowiredprivate StudentMapper studentMapper;
}

注意

添加@Service注解 

八.创建控制类(StudentController)

package com.example.controller;import com.example.service.IStudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/student")
public class StudentController {@Autowiredprivate IStudentService studentService; 
}

注意:

添加RestController和RequestMapping两个注解

九.写封装返回实体类

package com.example.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;@Data
@AllArgsConstructor
@NoArgsConstructor
public class RespBean {private long code;private String message;private Object object;public RespBean success(String message){return new RespBean(200,message,null);}public RespBean success(String message,Object object){return new RespBean(200,message,object);}public RespBean error(String message){return new RespBean(500,message,null);}public RespBean error(String message,Object object){return new RespBean(500,message,object);}
}

 注意:

添加注解@Data @AllArgsConstructor @NoArgsConstructor

十.配置数据库文件及端口

端口如果不配,则默认为8080

十一. 增删改查

一.查询(select)

步骤一:

在控制类(studentController)中写调用sevice层的接口的方法

方法名(selectAllStudents)   方法名可自行定义

@GetMapping("/selectAllStudents")
public List<Student> selectAllStudents(Student student){return studentService.selectAllStudents(student);
}
注意:

注解:

@GetMapping("/selectAllStudents")

步骤二:

在service里写selectAllStudents 方法

List<Student> selectAllStudents(Student student);

步骤三:

在实现类(IStudentServiceImpl)写实现该方法 

@Overridepublic List<Student> selectAllStudents(Student student) {return studentMapper.selectAll();}
}

调试

访问地址:http://localhost:8084/swagger-ui/index.html#/

二.增加

步骤一:

在控制类(studentController)中写调用sevice层的接口的方法

方法名(addStudents)  

@PostMapping("addStudents")
public RespBean addStudents(Student student ){return studentService.addStudents(student);
}
注意:

注解:

@GetMapping("/selectAllStudents")

步骤二:

在service里写addStudents 方法

RespBean addStudents(Student student);

步骤三:

 在实现类(IStudentServiceImpl)写实现该方法 

  @Overridepublic RespBean addStudents(Student student){studentMapper.insert(student);long id =student.getId();Student result=studentMapper.selectOneById(id);return RespBean.success("添加成功"+result);}
}

调试

 

点击Try it out 并根据属性输入数据

id可以不用输入

 然后去数据库student表查看

三.删除(delete)

删除的话我们可以根据id删除,可以根据name删除

A.根据id删除

步骤一:

在控制类(studentController)中写调用sevice层的接口的方法

方法名: deleteStudentById

@DeleteMapping("/deleteStudentById")
public RespBean deleteStudentById(int id){return studentService.deleteStudentById(id);
}
注意: 

注解:

@DeleteMapping("/deleteStudentById")

步骤二: 

在service里写deleteStudentById 方法

RespBean deleteStudentById(int id);

 步骤三:

 在实现类(IStudentServiceImpl)写实现该方法 

@Overridepublic RespBean deleteStudentById(int id){QueryWrapper queryWrapper=QueryWrapper.create().select().from("student").where(STUDENT.ID.eq(id));Student student=studentMapper.selectOneByQuery(queryWrapper);String username=student.getName();studentMapper.deleteById(id);return RespBean.success(username+"删除成功!");}
}

调试一:

 

当然如果我们删除的这个学生他不存在

在实现类添加if语句

例如:

调试二:

B.根据name删除

步骤一:

在控制类(studentController)中写调用sevice层的接口的方法

方法名: deleteStudentByName

@DeleteMapping("/ deleteStudentByName")
public RespBean  deleteStudentByName(String name){return studentService. deleteStudentByName(name);
}

步骤二: 

在service里写deleteStudentByIName 方法

步骤三:

 在实现类(IStudentServiceImpl)写实现该方法 

public RespBean  deleteStudentByName(String name){QueryWrapper queryWrapper= QueryWrapper.create().select().from("student").where(STUDENT.NAME.eq(name));Student student=studentMapper.selectOneByQuery(queryWrapper);if(student==null) {return RespBean.error("该学生不存在!");}String username=student.getName();studentMapper.deleteByQuery(queryWrapper);return RespBean.success(username+"删除成功");}

调试

 

此时student表的学生已经被我删除完了

四.更改(update)

 步骤一:

在控制类(studentController)中写调用sevice层的接口的方法

方法名: updateStudents

@PostMapping("/updateStudents")
public RespBean updateStudents(Student student){return studentService.updateStudents(student);
}

注意 :

注解:

@PostMapping("/updateMapping")

步骤二: 

在service里写updateStudents 方法

RespBean updateStudents(Student student);

步骤三:

 在实现类(IStudentServiceImpl)写实现该方法 

@Override
public RespBean updateStudents(Student student){QueryWrapper queryWrapper=QueryWrapper.create().select().from("student").where(STUDENT.ID.eq(student.getId()));studentMapper.update(student);return RespBean.success("修改成功");
}

 调试

假如我们把年级更改为高三,分数改为100

注意:

这里的id是必填选项,且id=?为你想要更改的对象,其他填选项为你想要更改的内容

我们再去查询该表

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

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

相关文章

企业如何找媒体发稿能收录且不被拒稿,媒介盒子无偿分享

媒平台像头条、百家号、微信、微博、搜狐等平台&#xff0c;都支持全自助发稿&#xff0c;拥有庞大的用户群体。也正是因为这些平台的发展&#xff0c;衍生出了一大批自媒体KOL&#xff0c;影响力与传统媒体不相上下甚至更胜。 媒体宣发是企业营销的必要途径之一。软文是成本低…

软件设计模式系列之十一——装饰模式

当谈到设计软件系统时&#xff0c;经常需要考虑如何使系统更加灵活、可扩展和易维护。设计模式是一种被广泛采用的方法&#xff0c;用于解决常见的设计问题&#xff0c;并提供了一套可重用的解决方案。装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&…

Vue路由与node.js环境搭建

目录 前言 一.Vue路由 1.什么是spa 1.1简介 1.2 spa的特点 1.3 spa的优势以及未来的挑战 2.路由的使用 2.1 导入JS依赖 2.2 定义两个组件 2.3 定义组件与路径对应关系 2.4 通过路由关系获取路由对象 2.5 将对象挂载到vue实例中 2.6 定义触发路由事件的按钮 2.7 定…

Python编辑器和Pycharm的傻瓜式安装部署

给我家憨憨写的python教程 有惊喜等你找噢 ——雁丘 Python解释器Pycharm的安装部署 关于本专栏一 Python编辑器1.1 使用命令提示符编写Python程序1.2 用记事本编写Python程序 二 Pycharm的安装三 Pycharm的部署四 Pycharm基础使用技巧4.1 修改主题颜色4.2 修改字体4.3 快速修…

Linux arm64 pte相关宏

文章目录 一、pte 和 pfn1.1 pte_pfn1.2 pfn_pte 二、其他宏参考资料 一、pte 和 pfn // linux-5.4.18/arch/arm64/include/asm/pgtable.h#define pte_pfn(pte) (__pte_to_phys(pte) >> PAGE_SHIFT) #define pfn_pte(pfn,prot) \__pte(__phys_to_pte_val((phys_addr_t)…

nvme_queue_rq函数分析一

nvme I/O请求时&#xff0c;数据交互分析 主要函数为nvme_queue_rq&#xff1a; static blk_status_t nvme_queue_rq(struct blk_mq_hw_ctx *hctx, const struct blk_mq_queue_data *bd) {struct nvme_ns *ns hctx->queue->queuedata;struct nvme_queue *nvmeq hctx-…

Linux内核顶层Makefile的make过程说明一

一. Linux内核源码的make编译 使用命令“make xxx_defconfig”配置好 Linux 内核以后就可以使用“make”或者“make all” 命令进行编译。 二. Linux内核源码的make过程 使用命令“ make xxx_defconfig ”配置好 Linux 内核以后就可以使用“ make ”或者“ make all ” 命…

js 事件流、事件冒泡、事件捕获、阻止事件的传播

事件流 js 事件的执行过程分为捕获阶段&#xff08;由外层节点传播到内层节点&#xff09;和冒泡阶段&#xff08;由内层节点传播到外层节点&#xff09;&#xff0c;即先执行捕获阶段的代码&#xff0c;后执行冒泡阶段的代码 事件冒泡 js 事件中的代码默认在冒泡阶段执行&…

【计组】计算机系统体系结构

【计组】计算机系统体系结构 文章目录 【计组】计算机系统体系结构1、体系的发展与思维变化1.1 计算机发展1.2 冯诺依曼体系 2、计算机系统2.1 CPU2.2 存储层次2.2.1 寄存器2.2.2 高速缓存&#xff08;Cache&#xff09;2.2.3 动态随机访问存储器&#xff08;DRAM&#xff09;2…

优化Cache机制,提升CPU性能

目录 CPU性能提升方式 CPU和Cache交互流程 Cache机制 优化Cache机制 CPU性能提升方式 CPU性能提升可以通过多种方式实现&#xff0c;以下是一些常见的方式&#xff1a; 增加CPU核心数&#xff1a;多核心处理器可以同时处理多个任务&#xff0c;从而提高CPU的处理能力。 提…

自动化发布npm包小记

1.注册npm账号 打开npm官网&#xff0c;并注册自己的npm账号 2.申请AccessToken 1.登录npm官网&#xff0c;登录成功后&#xff0c;点开右上角头像&#xff0c;并点击Access Tokens选项 2.点开Generate New Token下拉框&#xff0c;点击Classic Token(和Granular Access To…

CCF会议期刊(软件工程/系统软件/程序设计语言)

中国计算机学会推荐国际学术会议 1PLDIACM SIGPLAN Conference on Programming Language Design & ImplementationA会议软件工程/系统软件/程序设计语言2POPLACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesA会议软件工程/系统软件/程序设计语言3FS…

VS2019创建GIt仓库时剔除文件或目录

假设本地有解决方案“SomeSolution” 1、首先”团队资源管理器“-“创建Git存储库”&#xff0c;选择“仅限本地”、“创建” VS会在解决方案目录下自动生成.gitattributes、.gitignore 2、编辑gitignore&#xff0c;直接拖到VS里或者用记事本打开。添加要剔除的文件或文件夹…

轻松自定义文件,悦享文件管理与格式转换!

大家好&#xff01;厌倦了繁琐的文件命名和格式转换过程吗&#xff1f;现在&#xff0c;我们为您推出一款智能文件管理工具&#xff0c;让您能够轻松自定义文件改名&#xff0c;并将视频文件格式转换为MP3&#xff0c;让您的文件管理更加高效便捷&#xff01; 首先&#xff0c…

Redis核心数据结构实战与高性能解析

目录 一、安装Redis 二、Redis线程与高性能 2.1 Redis是单线程么&#xff1f; 2.2 Redis读写是单线程为何这么快&#xff1f; 2.3 Redis如何处理并发操作命令&#xff1f; 三、核心数据结构实战 3.1 字符串常用操作实战 SET 存入键值对 SETNX SETEX MSET 批量存入键…

java图片转pdf ,pdf 导出

pom引入jar <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.0-RC2</version></dependency> 转pdf方法 /*** 使用pdfbox将jpg转成pdf** throws IOException IOException*/pu…

.Net IDE智能提示汉化(.Net6、AspNetCore)

先上现成的.net6汉化文件&#xff0c;可以手动下载后参照 如何为 .NET 安装本地化的 IntelliSense 文件 进行安装。或者使用后文的工具进行自动安装。 无对照英文在前中文在前 汉化内容来自 官方在线文档 &#xff0c;某些内容可能存在明显的机翻痕迹。 上一些效果图&#x…

c语言基础知识+OS+数据结构

c语言&#xff1a; memory section&#xff1a; .bss&#xff1a; uninitialized or zero-initialized global and static variables .data: initialized global and static variables .text: Read only, code and const C语言编译流程&#xff1a; pre-compiler: …

快速安装和测试混淆后的IPA文件:使用Ipa Guard的签名和安装功能

​ 目录 转载&#xff1a;怎么保护苹果手机移动应用程序ipa中文件安全&#xff1f; 前言 1. 对敏感文件进行文件名称混淆 ​编辑 2. 更改文件的MD5值 3. 增加不可见水印处理 3. 对html&#xff0c;js&#xff0c;css等资源进行压缩 5. 删除可执行文件中的调试信息 转载&…

kubesphere中间件部署

微服务部署前中间件部署 一、MySQL部署 1.1 使用Docker实现MySQL主从复制 docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql/master/log:/var/log/mysql \ -v /mydata/mysql/master/data:/var/lib/mysql \ -v /mydata/mysql/master/conf:/etc/mysql \ -e My…