MyBatisPlus入门用法

MyBatisPlus(简称MP)是MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。

一、安装

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.5</version></dependency>

注意 :springboot和mybatisplus有版本冲突,这里用的是springboot3.1.7对应mybatisplus3.5.5

 二、代码实现

@Data
public class User implements Serializable {private static final long serialVersionUID = 1L;//主键,自增@TableId(value = "id",type = IdType.AUTO)private Integer id;private String no;private String name;private String password;private Integer age;private Integer sex;private String phone;private Integer roleId;@TableField("isValid")private String isValid;
}
@Mapper
public interface UserMapper extends BaseMapper<User> {}
public interface UserService extends IService<User> {}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Resourceprivate UserMapper userMapper;@Overridepublic List<User> listDemo() {return userMapper.listDemo();}public List<User> pageC(Page<User> page, Wrapper<User> wrapper){return userMapper.pageC(page, wrapper);}
}
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/userList")public List<User> userList(){return userService.list();}//新增@PostMapping("/add")public boolean add(@RequestBody User user){return userService.save(user);}//修改@PostMapping("/mod")public boolean mod(@RequestBody User user){return userService.updateById(user);}//新增or修改@PostMapping("/addOrMod")public boolean addOrMod(@RequestBody User user){return userService.saveOrUpdate(user);}//删除@GetMapping("/del")public boolean del(Integer id){return userService.removeById(id);}//模糊查询@PostMapping("/listP")public List<User> listP(@RequestBody User user){LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper();wrapper.like(user.getName() != null, User::getName ,user.getName()).like(user.getAge() != null, User::getAge,user.getAge());return userService.list(wrapper);}
}

三、分页查询

  1. 增加分页插件
    @Configuration
    public class MybatisPlusConfig {/*** 拦截器* @return*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();//如果配置多个插件,务必最后添加分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果有多数据源可以不配置具体类型DbType//interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
    }

  2. 使用分页查询
    1. 自带的查询方法
      @RestController
      public class UserController {@Autowiredprivate UserService userService;//分页查询@PostMapping("/userPage")public Result userPage(@RequestBody QueryPageParam pageParam){Page<User> page = new Page<>();page.setSize(pageParam.getPageSize());page.setCurrent(pageParam.getPageNum());HashMap param = pageParam.getParam();String name = (String) param.get("name");LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.like(name != null, User::getName,name);page = userService.page(page, wrapper);return Result.success(page.getTotal(),page.getRecords());}
      }
    2. 自定义分页查询
      @Mapper
      public interface UserMapper extends BaseMapper<User> {//可以用注解方式,也可以在mapper.xml配置@Select("select * from user ${ew.customSqlSegment}}")List<User> pageC(Page<User> page, @Param(Constants.WRAPPER) Wrapper<User> wrapper);
      }
      <?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.wms.mapper.UserMapper"><select id="pageC" resultType="com.wms.entity.User">select * from user ${ew.customSqlSegment}</select></mapper>

      这里service层就不贴代码了

      @RestController
      public class UserController {@Autowiredprivate UserService userService;//自定义分页查询@PostMapping("/pageC")public Result pageC(@RequestBody QueryPageParam pageParam){Page<User> page = new Page<>();page.setCurrent(pageParam.getPageNum());page.setSize(pageParam.getPageSize());String name = (String) pageParam.getParam().get(("name"));LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.like(name != null, User::getName,name);List<User> list = userService.pageC(page, wrapper);return Result.success(list.size(),list);}
      }

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

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

相关文章

python实现网络爬虫

网络爬虫是一个自动从互联网上抓取数据的程序。Python有很多库可以帮助我们实现网络爬虫&#xff0c;其中最常用的是requests&#xff08;用于发送HTTP请求&#xff09;和BeautifulSoup&#xff08;用于解析HTML或XML文档&#xff09;。 以下是一个简单的Python网络爬虫示例&a…

学习【Java IO】这一篇就够了

目录 1. 字节流1-1. InputStream1-2. outputStream 2. 字符流2-1. Reader2-2. Wirter 3. 字节缓冲流3-1. BufferedInputStream&#xff08;字节缓冲输入流&#xff09;3-2. BufferedOutputStream&#xff08;字节缓冲输出流&#xff09; 4. 字符缓冲流5. 打印流6. 随机访问流 1…

Linux 性能分析工具大全

vmstat--虚拟内存统计 vmstat&#xff08;VirtualMeomoryStatistics&#xff0c;虚拟内存统计&#xff09;是 Linux 中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU 等的整体情况进行监视。vmstat 的常规用法&#xff1a;vmstat interval times 即每隔 interval 秒采…

rsync+inotify实时同步 和 GFS分布式文件系统概述

目录 一、rsyncinotify实时同步 1.1.实时同步的优点 1.2.Linux内核的inotify机制 1.3.发起端配置rsyncInotify 1.4.配置远程登陆 1.4.1.修改rsync源服务器配置192.168.190.101 ​编辑 1.4.2.配置server 192.168.190.102 二、GFS 2.1.GlusterFS简介 2.2.GlusterFS特点…

Flutter学习11 - Future 与 FutureBuilder

1、Future 可以利用 Future 实现异步调用 1.1、Future 的两种形式 自定义一个结果类 class Response {String _data;Response(this._data); }自定义方法实现 Future Future<Response> testFuture() {var random Random();int randomNumber random.nextInt(10);if …

ADB 操作命令及其详细用法

adb devices 用途&#xff1a;列出连接到计算机的所有 Android 设备。详解&#xff1a;执行该命令后&#xff0c;ADB 将扫描连接到计算机的所有 Android 设备&#xff0c;并列出它们的序列号。 adb connect <device> 用途&#xff1a;连接到指定 IP 地址的 Android 设备。…

DIY自己的AI

一、开源AI大语言模型 目前开源的AI大语言模型(LLM)已经非常的多了&#xff0c;以下是收集的一些LLM&#xff1a; LLaMA LLaMA&#xff08;Large Language Model Meta AI&#xff09;&#xff1a;LLaMA是由MetaAI的Facebook人工智能实验室&#xff08;FAIR&#xff09;发布的…

大鼠尾静脉注射仪和小鼠尾静脉注射仪的区别

ZL-02B大鼠可视尾静脉注射仪是用于大鼠尾注射的一款仪器&#xff0c;以往给大鼠注射都是靠盲打&#xff0c;靠经验&#xff0c;对科研新手来说极其困难&#xff0c;有了大鼠尾静脉注射仪&#xff0c;可以大大提高注射效率&#xff0c;该仪器可以显示出尾部血管位置&#xff0c;…

Jenkins 持续集成 【CICD】

持续集成 &#xff08;Continuous integration&#xff0c;简称CI&#xff09; 持续集成是一种开发实践&#xff0c;它倡导团队成员频繁的集成他们的工作&#xff0c;每次集成都通过自动化构建&#xff08;包括编译、构建、打包、部署、自动化测试&#xff09;来验证&#xff…

python中的pass关键字、断言、解包、__name__ =__main__的使用

pass关键字 在Python中&#xff0c;pass是一个空语句&#xff0c;它不做任何操作&#xff0c;只是用来占位或作为占位符使用。在Python中&#xff0c;有时候需要保持语法完整性&#xff0c;但又不需要执行任何操作&#xff0c;这时可以使用pass语句。 以下是pass语句的一些常…

【云开发笔记No.30】弹性MapReduce

弹性MapReduce的定义 弹性MapReduce&#xff08;EMR&#xff09;是一种基于云原生技术和泛Hadoop生态开源技术的安全、低成本、高可靠的开源大数据平台。它结合了云计算的弹性和MapReduce的分布式计算能力&#xff0c;使得大数据处理变得更加高效和灵活。通过EMR&#xff0c;用…

python实现OCR:pytesseract和pyddleocr(附代码)

文章目录 背景pytesseractpaddleocr百度apipaddleocr 背景 OCR是光学字符识别&#xff08;Optical Character Recognition&#xff09;的缩写&#xff0c;通过扫描等光学输入方式和文字识别将图片中的文字提取出来&#xff0c;非常适用于提取网络截图或扫描pdf等文件里的文本。…

鼎盛合方案设计——汽车轮胎气压监测方案

一、介绍 随着汽车的普及和人们对行车安全的日益重视&#xff0c;胎压监测系统&#xff08;TPMS&#xff09;已经成为现代汽车的标准配置之一。传统的胎压监测系统通常采用有线方式&#xff0c;通过传感器和线缆将轮胎的压力信息传输到车辆的控制单元。然而&#xff0c;这种方…

成都欣丰洪泰文化传媒有限公司电商服务的新锐力量

在当今电商行业风起云涌的时代&#xff0c;成都欣丰洪泰文化传媒有限公司以其独特的视角和专业的服务&#xff0c;成为了业内的佼佼者。该公司专注于电商服务&#xff0c;致力于为广大商家提供全方位、多层次的解决方案&#xff0c;助力商家在激烈的市场竞争中脱颖而出。 一、…

使用 Python 批量提取 Excel 中的图片(提供工具下载链接)

本文收录于《Python入门核心技术》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 本文主要讲解如何利用 Python 来批量提取 Excel 中的图片&#xff0c;分别保存到目录中。并将程序打包成可执行文件&am…

rsync+inotify组合实现及时远程同步

目录 Rsync&#xff08;Remote Sync&#xff09;简介&#xff1a; Rsync 主要特点&#xff1a; Rsync 常用命令选项&#xff1a; Inotify 简介&#xff1a; Inotify 的主要功能&#xff1a; 结合 Rsync 和 Inotify 实现实时同步&#xff1a; 操作步骤&#xff1a; 配置…

vue3前端加载动画 lottie-web 的简单使用案例

什么是 Lottie Lottie 是 Airbnb 发布的一款开源动画库&#xff0c;它适用于 Android、iOS、Web 和 Windows 的库。 它提供了一套从设计师使用 AE&#xff08;Adobe After Effects&#xff09;到各端开发者实现动画的工具流。 UED 提供动画 json 文件即可&#xff0c; 开发者就…

品牌发言稿怎么写?纯干货

品牌发言稿的重要性不言而喻&#xff0c;它不仅代表着品牌形象&#xff0c;更是沟通品牌与消费者、合作伙伴的桥梁。如何撰写一篇高质量的品牌发言稿&#xff0c;成为许多品牌关注的焦点。伯乐网络传媒十多年文案撰写经验&#xff0c;今天就来给大家讲一讲。 一、品牌发言稿的组…

Linux: signal: sigcontext 结构体在哪里组装?

以下为intel x86-64为例 英文单词context这里是上下文的意思,那对于应用程序在跑的过程种,有哪些信息属于上下文呢?根据内核的代码来看有,程序执行时的寄存器内容/内存的内容。比如在x86-64里(arch/x86/include/uapi/asm/sigcontext.h),寄存器的列表有: https://man7.…

跨服务器迁移nextcloud数据

背景 阿里云最近做活动,99一年的2U2G的服务器,比我原来的1U1G的服务器不知道高到哪里去了,于是决定迁移服务器数据到另一台主机上。原先的计划是直接做一个自定义镜像,然后复制到另一台主机就行,结果发现旧主机是aliyunOS,新主机不想踩这个坑了,决定换成乌班图,因此决定重新搭…