手摸手2-springboot编写基础的增删改查

目录

    • 手摸手2-springboot编写基础的增删改查
      • 创建controller层
      • 添加service层接口
      • service层实现
      • 添加mapper层
      • mapper层对应的sql
      • 添加扫描注解,对应sql文件的目录

手摸手2-springboot编写基础的增删改查

创建controller层

实现 test 表中的添加、修改、删除及列表查询接口(未分页)

package com.onejson.ojmall.controller;import com.onejson.ojmall.entity.TestEntity;
import com.onejson.ojmall.entity.dto.TestDTO;
import com.onejson.ojmall.entity.vo.TestVO;
import com.onejson.ojmall.service.ITestService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import java.util.List;/*** 测试表** @author 微信公众号 onejson* @date 2023-08-11*/
@RestController
@RequestMapping(path = "/test", produces = "application/json;charset=UTF-8")
@Api(value = "/test", tags = "测试表", produces = "application/json;charset=UTF-8")
public class TestController{@Resourceprivate ITestService testService;/*** 查询列表*/@ApiOperation(value = "条件查询列表分页", notes = "条件查询列表分页")@GetMapping("/list")public List<TestEntity> list(TestEntity sysTest) {return testService.selectTestList(sysTest);}/*** 新增*/@ApiOperation(value = "新增")@PostMappingpublic boolean add(@Validated @RequestBody TestDTO testDTO) {return testService.insertTest(testDTO);}/*** 修改*/@ApiOperation(value = "更新")@PutMappingpublic boolean edit(@RequestBody TestDTO testDTO) {return testService.updateTest(testDTO);}/*** 详情*/@ApiOperation(value = "详情")@GetMapping(value = "/{id}")public TestVO getInfo(@PathVariable("id") Integer id) {return testService.getTestById(id);}/*** 删除*/@ApiOperation(value = "删除")@DeleteMapping("/{ids}")public boolean remove(@PathVariable Integer[] ids) {return testService.removeTestByIds(ids);}}

添加service层接口

package com.onejson.ojmall.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.onejson.ojmall.entity.TestEntity;
import com.onejson.ojmall.entity.dto.TestDTO;
import com.onejson.ojmall.entity.vo.TestVO;import java.util.List;/*** 测试表** @author 微信公众号 onejson* @date 2023-08-11 11:24:47*/
public interface ITestService extends IService<TestEntity> {/*** 查询测试表列表** @param testEntity 测试表Entity类* @return list列表*/List<TestEntity> selectTestList(TestEntity testEntity);/*** 新增测试表** @param testDTO 测试表DTO类* @return 结果*/boolean insertTest(TestDTO testDTO);/*** 更新测试表** @param testDTO 测试表DTO类* @return 结果*/boolean updateTest(TestDTO testDTO);/*** 详情测试表** @param id id值* @return 结果*/TestVO getTestById(Integer id);/*** 删除测试表** @param ids id数组* @return 结果*/boolean removeTestByIds(Integer[] ids);}

service层实现

package com.onejson.ojmall.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.onejson.ojmall.entity.TestEntity;
import com.onejson.ojmall.entity.dto.TestDTO;
import com.onejson.ojmall.entity.vo.TestVO;
import com.onejson.ojmall.mapper.TestMapper;
import com.onejson.ojmall.service.ITestService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;/*** 测试表** @author 微信公众号 onejson* @date 2023-08-11*/
@Service
@Transactional
public class TestServiceImpl extends ServiceImpl<TestMapper, TestEntity> implements ITestService {@Resourceprivate TestMapper testMapper;/*** 查询测试表列表** @param testEntity 测试表Entity类* @return 测试表*/@Overridepublic List<TestEntity> selectTestList(TestEntity testEntity) {return testMapper.selectTestList(testEntity);}/*** 新增测试表** @param testDTO 测试表DTO类* @return 结果*/@Overridepublic boolean insertTest(TestDTO testDTO) {TestEntity testInfoEntity = new TestEntity();BeanUtils.copyProperties(testDTO, testInfoEntity);return this.save(testInfoEntity);}/*** 更新测试表** @param testDTO 测试表DTO类* @return 结果*/@Overridepublic boolean updateTest(TestDTO testDTO) {TestEntity testInfoEntity = new TestEntity();BeanUtils.copyProperties(testDTO, testInfoEntity);return this.updateById(testInfoEntity);}/*** 详情测试表** @param id id值* @return 结果*/@Overridepublic TestVO getTestById(Integer id) {TestEntity testEntity = this.getById(id);TestVO testVO = new TestVO();BeanUtils.copyProperties(testEntity, testVO);return testVO;}/*** 删除测试表** @param ids id数组* @return 结果*/@Overridepublic boolean removeTestByIds(Integer[] ids) {return this.removeByIds(Arrays.asList(ids));}}

添加mapper层

package com.onejson.ojmall.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.onejson.ojmall.entity.TestEntity;
import org.apache.ibatis.annotations.Mapper;import java.util.List;/*** 测试表** @author 微信公众号 onejson* @date 2023-08-11 11:24:47*/
@Mapper
public interface TestMapper extends BaseMapper<TestEntity> {/*** 查询测试表列表** @param testEntity 测试表Entity类* @return list列表*/List<TestEntity> selectTestList(TestEntity testEntity);/*** 统计测试表个数** @param testEntity 测试表Entity类* @return 符合条件的记录个数*/Integer countTest(TestEntity testEntity);}

mapper层对应的sql

<?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.onejson.ojmall.mapper.TestMapper"><!-- 可根据自己的需求,是否要使用 --><resultMap type="com.onejson.ojmall.entity.TestEntity" id="testMap"><result property="id" column="id"/><result property="title" column="title"/></resultMap><sql id="selectTest">select *from test</sql><sql id="whereTest"><where><if test="id !=null and id !=''">AND id = #{id,jdbcType=VARCHAR}</if><if test="title !=null and title !=''">AND title = #{title,jdbcType=VARCHAR}</if></where></sql><select id="selectTestList" parameterType="com.onejson.ojmall.entity.TestEntity" resultMap="testMap"><include refid="selectTest"/><include refid="whereTest"/></select><select id="countTest" parameterType="com.onejson.ojmall.entity.TestEntity" resultType="java.lang.Integer">SELECT count(*)FROM (<include refid="selectTest"/><include refid="whereTest"/>) a</select></mapper>

添加扫描注解,对应sql文件的目录

@MapperScan("com.onejson.ojmall.mapper")

image-20230811175227748

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

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

相关文章

Unity——工程与资源

本文将详细介绍Unity工程的文件夹结构&#xff0c;以及动态加载资源的技术要点 一、Unity项目的文件夹结构 1.工程文件夹 在新建工程时&#xff0c;Unity会创建所有必要的文件夹。第一级文件夹有Assets,Library,Logs,Packages,ProjectSettings。 Assets&#xff1a;最主要的文…

stable diffusion实践操作-提示词插件安装与使用

本文专门开一节写提示词相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 正文 1、提示词插件安装 1.1、 安装 1.2 加载【应用更改并重载前端】 1.3 界面展示 1.3.-4 使用 里面有个收藏列表&#xff0c;可以收藏以前的所有提示…

CSC2121A

半桥架构的栅极驱动电路CSC2121A CSC2121系列是一款高性价比的半桥架构的栅极驱动专用电路&#xff0c;用于大功率MOS管、IGBT管栅极驱动。IC内部集成了逻辑信号处理电路、死区时间控制电路、欠压保护电路、电平位移电路、脉冲滤波电路及输出驱动电路&#xff0c;专用于无刷电…

10 行代码能做什么?

10 行代码能做什么&#xff1f; 写一串 SQL Join&#xff0c;统计全渠道市场营销的 ROI 用 JS 画个饼图&#xff0c;展示最有效的广告投放策略 用 Python 写段算法&#xff0c;分析销量骤降的原因是什么 …… 数据出错了&#xff0c;写个对数脚本 -_-|| AI 时代&#xff0c;…

Zookeeper的使用

一、Zookeeper简介 分布式协调框架&#xff0c;小型的树形结构数据共享储存系统。 zookeeper的应用场景 集群管理 注册中心 配置中心 发布者将数据发布到ZooKeeper一系列节点上面&#xff0c;订阅者进行数据订阅&#xff0c;当数据有变化时&#xff0c;可及时得到数据的变…

指针(个人学习笔记黑马学习)

1、指针的定义和使用 #include <iostream> using namespace std;int main() {int a 10;int* p;p &a;cout << "a的地址为&#xff1a;" << &a << endl;cout << "a的地址为&#xff1a;" << p << endl;…

promethues监控postgres,emqx,redis

一、监控postgres 1、安装监控 docker pull wrouesnel/postgres_exporter2、执行 docker run -d -p 9187:9187 --name postgres_exporter --nethost -d -e DATA_SOURCE_NAME"postgresql://postgres:123456192.168.12.116:5432/rcc-manage?sslmodedisable" wroues…

centos 7的超详细安装教程

打开虚拟机&#xff0c;创建一个新电脑 我们选择经典&#xff0c;然后选择下一步 我们选择稍后安装&#xff0c;我们在后面进行改设备 因为centos系统是linux系统的一个版本&#xff0c;所有我们选择linux&#xff0c;版本选择centos 7 64位&#xff0c;然后就是点击下一步 这一…

四、MySQL(表操作)如何添加字段?修改表?删除字段?修改表名?删除表?格式化某张表?

1、添加字段 &#xff08;1&#xff09;基础语法&#xff1a; alter table 表名 add 字段名 类型名(长度) [comment注释] [约束]; &#xff08;2&#xff09;示例&#xff1a;添加nickname这个字段 2、修改表 修改表中某个字段的【数据类型】/【数据类型&字段名】 &…

Microsoft Edge 主页启动diy以及常用的扩展、收藏夹的网站

一、Microsoft Edge 主页启动diy 二、常用的扩展 1、去广告&#xff1a;uBlock Origin 2、翻译&#xff1a; 页面翻译&#xff1a;右键就有了&#xff0c;已经内置了划词翻译 3、超级复制 三、收藏夹的网站

Nacos 配置管理及相关使用

文章目录 Nacos 配置管理一、统一配置管理1、在Nacos 中添加配置文件2、从微服务拉取配置3、配置实现步骤&#xff08;1&#xff09;引入 nacos-config 依赖&#xff08;2&#xff09;添加 bootstrap.yml&#xff08;4&#xff09;在 nacos 中添加配置 二、配置热更新1、配置热…

嵌入式部署机器学习模型---TinyML

我们目前生活在一个被机器学习模型包围的世界。在一天中&#xff0c;您使用这些模型的次数比您意识到的要多。诸如浏览社交媒体、拍照、查看天气等日常任务都依赖于机器学习模型。您甚至可能会看到此博客&#xff0c;因为机器学习模型向您推荐了此博客。 我们都知道训练这些模型…

Linux工具

一、yum yum可以看作一个客户端&#xff08;应用商店&#xff09;、应用程序&#xff0c;它如何知道去哪里下载软件&#xff1f; yum也是一个指令/程序&#xff0c;可以找到它的安装路径。 在list中可以看到yum能安装的所有软件&#xff0c;通过管道找到想要的&#xff0c;yum …

时序预测 | MATLAB实现Attention-GRU时间序列预测(注意力机制融合门控循环单元,TPA-GRU)

时序预测 | MATLAB实现Attention-GRU时间序列预测----注意力机制融合门控循环单元&#xff0c;即TPA-GRU&#xff0c;时间注意力机制结合门控循环单元 目录 时序预测 | MATLAB实现Attention-GRU时间序列预测----注意力机制融合门控循环单元&#xff0c;即TPA-GRU&#xff0c;时…

nvm安装后,安装并切换版本,node报错

1、下载 下载地址 https://github.com/coreybutler/nvm-windows/releases 这个版本是 v1.1.11&#xff0c;不喜欢的话&#xff0c;自己选版本 下载setup.exe&#xff0c;安装 2、安装 安装时候 安装路径可以自选&#xff0c;但是涉及到指向的路径&#xff0c;最好让它自己选&…

深入探索C语言自定义类型:打造你的编程世界

一、什么是自定义类型 C语言提供了丰富的内置类型&#xff0c;常见的有int, char, float, double, 以及各种指针。 除此之外&#xff0c;我们还能自己创建一些类型&#xff0c;这些类型称为自定义类型&#xff0c;如数组&#xff0c;结构体&#xff0c;枚举类型和联合体类型。 …

【TCP】四次挥手(最强详解!!通俗易懂!!)

目录 想要了解三次握手的话可以参考我的另外一篇博客 首先来了解一下FIN和ACK FIN ACK 接着我们再来具体的了解TCP四次挥手过程 转换为最最通俗理解方法: 想要了解三次握手的话可以参考我的另外一篇博客 【TCP】三次握手&#xff08;最强详解&#xff01;&#xff01;通俗…

C++之std::distance应用实例(一百八十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

MySQL 8 数据清洗总结

MySQL 8 数据清洗三要素&#xff1a; 库表拷贝和数据备份数据清洗SQL数据清洗必杀技-存储过程 前提&#xff1a;数据库关联库表初始化和基础数据初始化&#xff1a; -- usc.t_project definitionCREATE TABLE t_project (id varchar(64) NOT NULL COMMENT 主键,tid varchar(…

以物联网为核心的智慧工地云平台:聚集智能技术,实现建筑工地智慧管理

智慧工地云平台源码&#xff0c;智慧工地项目监管平台源码&#xff0c;智慧工地可视化数据大屏源码 智慧工地云平台是将云计算、大数据、物联网、移动技术和智能设备等信息化技术手段&#xff0c;聚集在建筑工地施工管理现场&#xff0c;围绕人员、机械、物料、环境等关键要素&…