mybatisPlus·入门·贰

news2024/11/25 3:33:04

文章目录

  • 1 简单CRUD接口
    • 1.1 根据id查询({id传参)
      • 1.1.1 接口类直接继承IService
      • 1.1.2 controller直接调用方法
    • 1.2 根据ids查询
    • 1.3 新增
      • 1.3.1 接口类直接继承IService
      • 1.3.2 controller直接调用方法
    • 1.4 修改状态(Query传参)
      • 1.4.1 接口类直接继承IService
      • 1.4.2 controller直接调用方法
    • 1.5 根据id删除商品
      • 1.5.1 接口类直接继承IService
      • 1.5.2 controller直接调用方法
  • 2 分页查询
    • 2.1 不带条件的分页查询
      • 2.1.1 拦截SQL语句,目的是拼接limit条件
      • 2.1.2 接口类直接继承IService
      • 2.1.3 controller直接调用方法
    • 2.2 带条件的分页查询
      • 2.2.1 拦截SQL语句,目的是拼接limit条件
      • 2.2.2 接口类直接继承IService
      • 2.2.3 controller直接调用方法
  • 3 构造查询条件
    • 3.1 new LambdaQueryWrapper<>();
    • 3.2 调用queryWrapper 里的方法

1 简单CRUD接口

1.1 根据id查询({id传参)

1.1.1 接口类直接继承IService

public interface IItemService extends IService<Item> {
}

1.1.2 controller直接调用方法

 /**
     * 根据id查询商品
     *
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Item getById(@PathVariable Long id) {
        log.info("商品id为:{}", id);
        Item item = itemService.getById(id);
        return item;
    }

1.2 根据ids查询

直接调用itemService.getBaseMapper().selectBatchIds(ids)方法

    @GetMapping("/ids")
    public List<Item> getByIds(@RequestParam List<Long> ids) {
        log.info("商品ids为:{}", ids);
        List<Item> itemList = itemService.getBaseMapper().selectBatchIds(ids);
        return itemList;
    }

1.3 新增

1.3.1 接口类直接继承IService

public interface IItemService extends IService<Item> {
}

1.3.2 controller直接调用方法

  /**
     * 新增商品
     *
     * @param item
     */
    @PostMapping
    public void saveItem(@RequestBody Item item) {
        log.info("商品参数{}:", item);
        itemService.save(item);
    }

1.4 修改状态(Query传参)

1.4.1 接口类直接继承IService

public interface IItemService extends IService<Item> {
}

1.4.2 controller直接调用方法

    /**
     * 商品上架、下架
     * @param item
     */
    @PutMapping("/status/{id}/{status}")
    public void updateStatus(Item item) {
        log.info("修改商品状态:{}", item);
        itemService.updateById(item);
    }

1.5 根据id删除商品

1.5.1 接口类直接继承IService

public interface IItemService extends IService<Item> {
}

1.5.2 controller直接调用方法

    /**
     * 根据 id删除商品
     * @param id
     */
    @DeleteMapping("/{id}")
    public void delateById(@PathVariable Long id){
        log.info("删除商品id:{}", id);
        itemService.removeById(id);
    }

2 分页查询

2.1 不带条件的分页查询

2.1.1 拦截SQL语句,目的是拼接limit条件

/**
 * mp分页拦截
 */
@Configuration
public class MpConfig {

    @Bean
    public MybatisPlusInterceptor mpInterceptor(){
        //1 定义mp拦截器,创建MybatisPlusInterceptor拦截器对象
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        //2 添加具体的拦截器、添加分页拦截器
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mpInterceptor;
    }
}

2.1.2 接口类直接继承IService

public interface IItemService extends IService<Item> {
}

2.1.3 controller直接调用方法

   /**
     * 分页查询商品
     *
     * @param page
     * @param size
     * @return
     */
    @GetMapping("/list")
    public PageDTO<Item> list2(int page, int size) {
        log.info("页数,大小参数{},{}", page, size);
        IPage<Item> iPage = new Page<>(page, size);//构造分页构造器,有page、size
        IPage<Item> pageInfo = itemService.page(iPage);
        return new PageDTO<Item>(pageInfo.getTotal(),pageInfo.getRecords());
    }

2.2 带条件的分页查询

2.2.1 拦截SQL语句,目的是拼接limit条件

/**
 * mp分页拦截
 */
@Configuration
public class MpConfig {

    @Bean
    public MybatisPlusInterceptor mpInterceptor(){
        //1 定义mp拦截器,创建MybatisPlusInterceptor拦截器对象
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        //2 添加具体的拦截器、添加分页拦截器
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mpInterceptor;
    }
}

2.2.2 接口类直接继承IService

public interface IItemService extends IService<Item> {
}

2.2.3 controller直接调用方法

 /**
     * 分页查询商品
     *
     * @param page
     * @param size
     * @return
     */
    @GetMapping("/list")
    public PageDTO<Item> list(int page, int size) {
        log.info("页数,大小参数{},{}", page, size);
        IPage<Item> pageInfo = new Page<>(page, size);//构造分页构造器,有page、size
        LambdaQueryWrapper<Item> queryWrapper = new LambdaQueryWrapper<>();//构造条件构造器,此处前端请求page、size
        queryWrapper.orderByDesc(Item::getCreateTime);//添加排序条件,按更新时间排序
        itemService.page(pageInfo, queryWrapper);
        PageDTO<Item> pageDTO = new PageDTO<>();//构造前端返回值对象
        pageDTO.setList(pageInfo.getRecords());//放入数据
        pageDTO.setTotal(pageInfo.getTotal());//放入总大小
        return pageDTO;
    }

3 构造查询条件

3.1 new LambdaQueryWrapper<>();

 LambdaQueryWrapper<Item> queryWrapper = new LambdaQueryWrapper<>();

3.2 调用queryWrapper 里的方法

在这里插入图片描述

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

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

相关文章

GPT-4 IDEA神仙插件亲测帮助亿万用户解决痛点!

最近&#xff0c;Intellij IDEA的插件商店推出了一款新的插件——Bito&#xff0c;据说使用了GPT-4和ChatGPT来帮助开发人员编写代码&#xff0c;并且下载量已经达到了65K以上。 这款插件可以将GPT-4和ChatGPT引入IDE来大大提高开发人员的效率。它使用了OpenAI的模型&#xff0…

ESP32设备驱动-BMM150数字地磁传感器驱动

BMM150数字地磁传感器驱动 文章目录 BMM150数字地磁传感器驱动1、BMM150介绍2、硬件准备3、软件准备4、驱动实现1、BMM150介绍 BMM150 是一款低功耗、低噪声的 3 轴数字地磁传感器,用于罗盘应用。 具有 1.56 x 1.56 mm 和 0.60 mm 高度的 12 引脚晶圆级芯片级封装 (WLCSP) 为…

JavaEE 2(4/24)

目录 1.线程 2.前台线程和后台线程 3.run和start的区别 4.线程的终止 5.线程等待 6.获取当前线程的引用 1.线程 创建线程需要继承Thread方法 调用start方法就会生成一个新的线程,调用run方法会在老的线程继续跑 main也是个线程,他是自动调用的.线程休息了先唤醒main和thre…

【文章学习系列之模型】Informer

本章内容 文章概况总体结构重点结构self-attention distilling operation&#xff08;自注意蒸馏操作&#xff09;generative style decoder&#xff08;生成式解码器&#xff09;ProbSparse self-attention mechanism&#xff08;概率稀疏自注意机制&#xff09; 实验结果主要…

双向沟通写作法: 用妙记多 Mojidoc 快速写作的实践

在妙记多 Mojidoc&#xff0c;我们希望能够为用户提供快速开始生产力的工具&#xff0c;为此我们一直在加快完善用户使用中的需求和功能迭代&#xff0c;请查看妙记多更新日志&#xff0c;看看我们产品改进速度。 妙记多 Mojidoc 如何实践双向沟通写作法以及在双向写作的文档中…

自称是资深Android程序员的面试现场,结果被面试官吊打~

1背景 牛哥工作五年了&#xff0c;是一名“资深”程序员&#xff08;嗯…至少他自己是这么认为的&#xff09; 牛哥所在的公司已经两年没有涨过工资了&#xff08;嗯…至少他是两年没涨过了&#xff09; 牛哥坐不住了&#xff0c;这位“资深”程序员打算去“外面的世界”看看…

〖ChatGPT实践指南 - 零基础扫盲篇④〗- OpenAI API 相关介绍、提示-Prompt 与 完成-Completion

文章目录 ⭐ OpenAI API介绍⭐ 提示-Prompt 与 完成-Completion 介绍 这一章节将为各位小伙伴介绍一下 OpenAI 的 API 相关内容&#xff0c;以及在 ChatGPT 中两个经常被用来比较的名词&#xff1a;“提示-prompt” 与 “完成-completion”。 ⭐ OpenAI API介绍 OpenAI API 概…

Fido无密码认证示例部署运行

文章目录 什么是FIDOwebauthn部署运行访问测试 本文对fido基本概念进行总结说明&#xff0c;并部署运行一个实际的例子&#xff0c;可以直观的体验fido无密码认证。晚上的例子方便后续实现相关功能。 什么是FIDO 常见认证方式的问题 目前流行认证方式普遍存在一些问题 用户名…

Ajax ASP/PHP

文章目录 AJAX ASP/PHP 实例AJAX ASP/PHP 实例实例解析 showHint() 函数AJAX 服务器页面 ASP 和 PHPASP 文件PHP 文件 AJAX ASP/PHP 实例 AJAX 用于创造动态性更强的应用程序。 AJAX ASP/PHP 实例 下面的例子将为您演示当用户在输入框中键入字符时&#xff0c;网页如何与 web…

【打卡-Coggle竞赛学习2023年4月】图像检索与重复图像识别

#### 任务1&#xff1a;图像匹配与检索 图像相似度 图像相似度是用于度量两幅图像之间相似程度的指标。图像相似度可以基于像素级别的相似度或者基于特征匹配的相似度来计算。像素级别的相似度通常是基于两幅图像的像素值来计算的&#xff0c;包括均方误差、结构相似性指数&a…

被遗忘的Java关键字:transient

前言 今天在看项目代码时候&#xff0c;看到了下面这样一行代码&#xff0c;用transient修饰了一个变量&#xff0c;主要作用是做一个全局开关。说实话我是第一次看到这个关键字。激发了我的好奇心&#xff0c;所以就了解一下这是何方神圣。 /*** 全局开关*/public static tran…

Linux第三章

文章目录 前言一、Linux的root用户1.用户和用户组2.查看权限控制信息3.chmod命令4.chown命令 总结 前言 一、Linux的root用户 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root&#xff08;…

QGIS数据可视化学习笔记03——地理解析(地址解析,地理编码......)和数据上图

一、地理解析 百度百科传送门&#xff1a;https://baike.baidu.com/item/%E5%9C%B0%E7%90%86%E7%BC%96%E7%A0%81/2890260 简单来说&#xff0c;就是名称对应QGIS中经纬度等坐标的转换&#xff0c;比如给出北京朝阳公园&#xff0c;你在QGIS中转换为对应的经纬度坐标&#xff0c…

企业网站注册攻略,告别烦恼!

业网站的注册过程可能对于一些初创企业来说比较繁琐&#xff0c;但它是推广企业品牌的重要途径之一。本文将为您介绍企业网站注册的攻略&#xff0c;帮助您更加高效地完成注册过程。 步骤&#xff1a; 1、确定网站类型&#xff1a;在开始注册之前&#xff0c;企业需要确定网站…

ASEMI代理ADI亚德诺ADG5412BRUZ-REEL7车规级芯片

编辑-Z ADG5412BRUZ-REEL7芯片参数&#xff1a; 型号&#xff1a;ADG5412BRUZ-REEL7 开态电阻&#xff1a;9.8Ω 电源断开漏电流&#xff1a;0.05 nA 输入高电压&#xff1a;2V 输入低电压&#xff1a;0.8V 输入电流&#xff1a;0.002μA 数字输入电容&#xff1a;2.5 …

Bean作用域与生命周期

日升时奋斗&#xff0c;日落时自省 目录 1、Bean的作用域问题 1.1、Lombok 1.2、修改Bean对象 2、作用域定义 2.1、Bean的6种作用域 2.1.1、singleton 2.1.2、prototype 2.1.3、request 2.1.4、session 2.1.5、appliction&#xff08;了解&#xff09; 2.1.6、webs…

I2C驱动框架介绍以及Linux下sht20驱动开发温湿度传感器获取温湿度

文章目录 一、I2C驱动框架&#xff08;1&#xff09;I2C驱动框架介绍&#xff08;2&#xff09;I2C总线驱动介绍【1】i2c_adapter结构体【2】i2c_algorithm结构体【3】I2C总线驱动工作介绍 &#xff08;3&#xff09;I2C设备驱动介绍【1】i2c_client结构体【2】i2c_driver结构体…

Docker容器---Harbor私有仓库部署与管理

Harbor私有仓库部署与管理 一、Harbor概述二、Harbor特性三、Harbor构成四、Harbor构建Docker私有仓库1、部署docker-compos2、下载或上传 Harbor 安装程序3、启动Harbor4、查看Harbor启动镜像5、浏览器访问创建一个新项目6、通过127.0.0.1来登录和推送镜像7、在客户端上传镜像…

【JavaScript】动态表格

&#x1f38a;专栏【 前端易错合集】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; &#x1f354;介绍 就是在输入框中输入数字后&#xff0c;再按…

Linux安装mysql(5.7解压版)

Linux服务器安装软件时&#xff0c;建议安装解压版&#xff0c;将文件安装在自己指定的目录。安装版一般会将软件安装在Linux默认的目录&#xff0c;如/usr/local/&#xff0c;配置文件在/etc/&#xff0c;日志在/logs&#xff0c;安装目录比较分散&#xff0c;特别是不熟悉该软…