【SpringBoot + Vue 尚庭公寓实战】租期管理接口实现(四)

【SpringBoot + Vue 尚庭公寓实战】租期管理接口实现(四)


文章目录

      • 【SpringBoot + Vue 尚庭公寓实战】租期管理接口实现(四)
        • 1、查询全部租期列表
        • 2、保存或更新租期信息
        • 3、根据ID删除租期

租期管理共有三个接口,分别是

保存或更新租期信息

查询全部租期列表

根据ID根据ID删除租期

首先需要在FacilityController中注入FacilityInfoService

@Tag(name = "租期管理")
@RequestMapping("/admin/term")
@RestController
public class LeaseTermController {
    @Autowired
    private LeaseTermService leaseTermService;

}

1、查询全部租期列表

查看接口,运行项目后,访问localhost:8080/doc.html

点击租期管理

再点击查询全部租期列表接口

image-20240607141207262

image-20240607141308619

{
	"code": 0,
	"message": "",
	"data": [
		{
			"id": 0,
			"monthCount": 0,
			"unit": ""
		}
	]
}

进行开发

1、在LeaseTermController 中添加方法,根据接口给的信息定义

@GetMapping("list")
@Operation(summary = "查询全部租期列表")
  public Result<List<LeaseTerm>> listLeaseTerm() {
      List<LeaseTerm> list = leaseTermService.list();
      return Result.ok(list);
}

2、查看service层

/**
* @author liubo
* @description 针对表【lease_term(租期)】的数据库操作Service
* @createDate 2023-07-24 15:48:00
*/
public interface LeaseTermService extends IService<LeaseTerm> {

}

因为使用的是mybatisplus,这意味着它将拥有接口中定义的所有通用CRUD方法,这些方法可以直接用于对LeaseTerm实体对应的数据库表进行操作。

调试测试,点击调试,发送

image-20240607141832695

//响应内容成功
{
  "code": 200,
  "message": "成功",
  "data": [
    {
      "id": 1,
      "monthCount": 1,
      "unit": "月"
    },
    {
      "id": 3,
      "monthCount": 3,
      "unit": "月"
    },
    {
      "id": 4,
      "monthCount": 6,
      "unit": "月"
    },
    {
      "id": 6,
      "monthCount": 12,
      "unit": "月"
    }
  ]
}

知识点

  • 逻辑删除功能

    由于数据库中所有表均采用逻辑删除策略,所以查询数据时均需要增加过滤条件is_deleted=0

    上述操作虽不难实现,但是每个查询接口都要考虑到,也显得有些繁琐。为简化上述操作,可以使用Mybatis-Plus提供的逻辑删除功能,它可以自动为查询操作增加is_deleted=0过滤条件,并将删除操作转为更新语句。具体配置如下,详细信息可参考官方文档。

  • 由于在前篇的房间支付方式已经实现,而实体类都继承BaseEntity,所以这里不需要做任何操作

    /**
     * @TableName lease_term
     */
    @TableName(value = "lease_term")
    @Data
    @Schema(description = "租期信息")
    public class LeaseTerm extends BaseEntity {
    
        private static final long serialVersionUID = 1L;
    
        @Schema(description = "租期月数")
        @TableField("month_count")
        private Integer monthCount;
    
        @Schema(description = "租期单位:月")
        @TableField("unit")
        private String unit;
    }
    
2、保存或更新租期信息

查看接口,运行项目后,访问localhost:8080/doc.html

点击租期管理

再点击保存或更新租期信息

image-20240607142316891

image-20240607142326294

进行开发

在LeaseTermController 中添加方法,根据接口给的信息定义

@PostMapping("saveOrUpdate")
@Operation(summary = "保存或更新租期信息")
public Result saveOrUpdate(@RequestBody LeaseTerm leaseTerm) {
     leaseTermService.saveOrUpdate(leaseTerm);
     return Result.ok();
}

进行测试,发送请求

{
  "monthCount": 24,
  "unit": "月"
}

image-20240607142635561

知识点:

保存或更新数据时,前端通常不会传入isDeletedcreateTimeupdateTime这三个字段,因此我们需要手动赋值。但是数据库中几乎每张表都有上述字段,所以手动去赋值就显得有些繁琐。为简化上述操作,我们可采取以下措施。

  • is_deleted字段:可将数据库中该字段的默认值设置为0。

  • create_timeupdate_time:可使用mybatis-plus的自动填充功能,所谓自动填充,就是通过统一配置,在插入或更新数据时,自动为某些字段赋值,具体配置如下,详细信息可参考官方文档。

    • 为相关字段配置触发填充的时机,例如create_time需要在插入数据时填充,而update_time需要在更新数据时填充。具体配置如下,观察@TableField注解中的fill属性。

      @Data
      public class BaseEntity {
      
          @Schema(description = "主键")
          @TableId(value = "id", type = IdType.AUTO)
          private Long id;
      
          @Schema(description = "创建时间")
          @JsonIgnore
          @TableField(value = "create_time", fill = FieldFill.INSERT)
          private Date createTime;
      
          @Schema(description = "更新时间")
          @JsonIgnore
          @TableField(value = "update_time", fill = FieldFill.UPDATE)
          private Date updateTime;
      
          @Schema(description = "逻辑删除")
          @JsonIgnore
          @TableLogic
          @TableField("is_deleted")
          private Byte isDeleted;
      
      }
      
    • 配置自动填充的内容,具体配置如下

  • common模块下创建com.atguigu.lease.common.mybatisplus.MybatisMetaObjectHandler类,内容如下:

    @Component
    public class MybatisMetaObjectHandler implements MetaObjectHandler {
        @Override
        public void insertFill(MetaObject metaObject) {
            this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        }
    
        @Override
        public void updateFill(MetaObject metaObject) {
            this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
        }
    }
    

注意:由于上篇已经实现过了。这里也不需要做任何操作

3、根据ID删除租期

查看接口,运行项目后,访问localhost:8080/doc.html

点击租期管理

再点击根据ID删除租期

image-20240607142940622

进行开发

    @DeleteMapping("deleteById")
    @Operation(summary = "根据ID删除租期")
    public Result deleteLeaseTermById(@RequestParam Long id) {
        leaseTermService.removeById(id);
        return Result.ok();
    }

测试

image-20240607143011626

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

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

相关文章

HDFS的块汇报和块放置策略--从一次HDFS写文件故障开始(WIP)

文章目录 前言事故分析&#xff1a;代码解析BlockReport的调度和时机哪些Block会进行FBR或者IBRIBR所选定的BlockFBR所选定的Block 块放置策略详解之在上层寻找机器为文件添加块的基本流程块放置策略&#xff1a;选择机器为每个副本逐个寻找机器在指定范围内随机寻找简单看一下…

如何学习使用淘宝API?淘宝API运营场景

学习使用淘宝API涉及对其功能、分类、调用方法及实际应用的综合理解。下面按部分详细解释如何系统地学习和掌握淘宝API的使用&#xff1a; 淘宝API接口入门 了解淘宝开放平台&#xff1a;淘宝开放平台为开发者提供了一个可以与淘宝数据进行交互的平台&#xff0c;涵盖了丰富的A…

在当前页面拿到抽屉弹窗页面中从后端返回的值 #Vue3 #两个.vue页面之间传值问题

在当前页面拿到抽屉弹窗页面中从后端返回的值 #Vue3 #两个.vue页面之间传值问题 *解决方法一&#xff1a; 将抽屉弹窗里从后端返回得到的值缓存在浏览器中&#xff0c;在当前页面中从浏览器中获取该值。 &#xff08;原理其实就是借助第三个盒子来传递一下值&#xff0c;太小学…

C#操作MySQL从入门到精通(12)——对查询结果进行计算

前言 我们有时候需要对查询到的数据进行一些计算,比如将两个列的数据拼接在一起,比如将两个列的数据进行相乘,Mysql中是支持这种操作的,下面我来详细介绍: 本篇文章测试使用的数据库如下: 1、将两个列的数据进行拼接 我们将姓名和年龄这两个列的数据进行拼接,如下:…

变压器绕线完成之后要做的事

1 调整感量&#xff1a;测主绕组电感量&#xff0c;通过磨气隙或垫气隙&#xff0c;测得感量没错以后&#xff0c;用胶带封装磁芯 2 测验同名端是否正确&#xff1a;两绕组首尾相连&#xff0c;测试连接后的总感量&#xff0c;是否比感量大的那个绕组还大。如果是&#xff0c;…

Apple开发者应用商店(AppStore)描述文件及ADHOC描述文件生成

创建AD HOC描述文件 1.选中Profiles,然后点击加号创建 2.创建已注册设备可安装描述文件 3.选择要注册的id 4.选择证书 5.选择设备 6.输入文件名,点击生成 7.生成成功,点击下载

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:大型机械智能预警系统

三一重工股份有限公司&#xff0c;是由三一集团创建于1994年&#xff0c;通过打破国人传统的“技术恐惧症”坚持自主创新迅速崛起。2011年7月&#xff0c;三一重工以215.84亿美元的市值荣登英国《金融时报》全球市值500强&#xff0c;是迄今唯一上榜的中国机械企业。2012年1月&…

Qsemaphore

Qsemaphore 实现 给while循环阻塞延时 基本思路就是&#xff1a; whlie循环里面 通过m&#xff3f;bthreadFlag&m_bStatus这两个标志位&#xff0c;判断是否进入while循环&#xff0c;再根据40行的acquire&#xff08;&#xff09;来阻塞循环&#xff0c;因为定时器的槽函数…

YOLOv5车流量监测系统研究

一. YOLOv5算法详解 YOLOv5网络架构 上图展示了YOLOv5目标检测算法的整体框图。对于一个目标检测算法而言&#xff0c;我们通常可以将其划分为4个通用的模块&#xff0c;具体包括&#xff1a;输入端、基准网络、Neck网络与Head输出端&#xff0c;对应于上图中的4个红色模块。Y…

探索加密货币:打造Web3项目与企业的新篇章

本文来源香港Web3媒体&#xff1a;Techub News 在数字化浪潮席卷全球的今天&#xff0c;加密货币及Web3项目和企业正成为引领创新的重要力量。作为这一领域的观察者&#xff0c;Mark Beylin深入剖析了如何通过打造人们真正需要的代币&#xff0c;来推动Web3项目的成功与企业的蓬…

浅谈Spring MVC

文章目录 一、什么是 Spring MVC&#xff1f;1.1、MVC定义1.2、MVC 和 Spring MVC 的关系&#xff1f; 1.3、为什么要学习 Spring MVC?二、需要掌握Spring MVC的一些功能2.1 Spring MVC 的创建和连接功能实现2.2 Spring MVC 获取参数功能2.2.1、传递单个参数2.2.2、传递对象2.…

大漠插件7.2422

工具名称:大漠插件7.2422 /更新时间2024年6月2日 / v7.2422 1. 综合工具的图像编辑工具可以缩放窗口了 2. 增加AiFindPic AiFindPicEx AiFindPicMem AiFindPicMemEx AiEnableFindPicWindow 共5个接口 / 工具简介: 大漠 综合 插件 (dm.dll)采用vc6.0编写&#xff0c;识别速度超级…

北京崇文门中医医院贾英才与行业共进——第二届海峡两岸中西医结合肾脏病学术大会

第二届海峡两岸中西医结合肾脏病学术大会授牌仪式于2024年6月7号在北京前门国医堂举行。 第二届海峡两岸中西医结合肾脏病学术大会的主要议程可能包括以下内容&#xff1a; 学术讲座&#xff1a;来自海峡两岸的专家学者发表演讲&#xff0c;分享肾脏病防治、透析技术等方面的研…

多尺度注意力创新

深度之眼17种多尺度注意力创新

离散数学答疑 3

&#xff5e;A&#xff1a;A的补集 有时候空集是元素&#xff0c;有时候就是纯粹的空集 A-B的定义&#xff1a; 笛卡尔积&#xff1a; 求等价关系&#xff1a;先求划分再一一列举 不同划分&#xff1a;分几块。一块&#xff1a;两块&#xff1a;三块&#xff1a;分别计算 Ix是…

微信小程序发布流程

目录 一、小程序注册二、小程序发布1.小程序信息、小程序类目、微信认证、微信备案&#xff08;1&#xff09;填写小程序信息&#xff08;2&#xff09;补充小程序类目&#xff08;3&#xff09;微信认证&#xff08;4&#xff09;微信备案 2.设置服务器域名3.开通地理位置相关…

探索风电机组:关键软件工具全解析

探索风电机组&#xff1a;关键软件工具全解析 随着可再生能源市场的迅猛发展&#xff0c;风电作为一种重要的可再生能源&#xff0c;其相关技术和工具也越来越受到重视。风电机组的设计、仿真、优化及运维等方面&#xff0c;都需要依靠一系列专业软件工具来实现。这些软件涵盖…

Erlang

官网地址&#xff1a; Index - Erlang/OTP windows环境变量配置 创建新系统变量 ERLANG_HOME 在path加入上述配置

数据库设计步骤、E-R图转关系模式、E-R图的画法

一、数据库设计步骤 ①需求分析阶段 准确了解与分析用户需求。 ②概念结构设计阶段 通过对用户需求进行综合、归纳与抽象&#xff0c;形成一个独立于具体数据库管理系统的概念模型。 ③逻辑结构设计阶段 将概念结构转换为某个数据库管理系统所支持的数据模型&am…

input组件 type为nickname pc端获取不到这个绑定的值?

一、input组件 type为nickname pc端获取不到这个绑定的值&#xff1f; 在pc端 使用input blur 事件获取选择昵称结果失败 代码如下&#xff1a; <input type"nickname" bindblur"binname" name"nickName" placeholder"请输入昵称"…