BaseMapper中提供的方法(17种CRUD)

BaseMapper封装的17种增删改查方法

MybatisPlus框架中mapper层继承了BaseMapper接口,该接口中封装了常用的增删改查方法,共有17种,以下是方法的详情介绍

首先需要明确的括号内的一些对象定义

  • 泛型T:实体类类型
  • @Param注解:指定了参数名称
  • et:实体类对象
  • ew:查询条件wrapper对象

在这里插入图片描述
在这里插入图片描述

1.插入一条数据 int insert(T entity)

   T entity = new T(); // 创建实体对象baseMapper.insert(entity); // 插入数据

2.根据主键id删除数据 int deleteById(Serializable id)

   Serializable id = 1L; // 要删除的实体的主键ID=xxxbaseMapper.deleteById(id); // 删除数据

3.map集合根据条件删除数据 int deleteByMap(@Param(“cm”) Map<String, Object> columnMap)

   Map<String, Object> columnMap = new HashMap<>();//创建一个map集合存放符合删除条件需要删除的数据columnMap.put("name", "wonwoo"); // 设置删除条件,比如name字段等于"wonwoo",将name字段等于"wonwoo"的数据放入创建的map集合baseMapper.deleteByMap(columnMap); // 删除满足条件的数据

4.高级查询根据条件删除数据 int delete(@Param(“ew”) Wrapper wrapper)

   // 创建Wrapper对象,设置删除条件LambdaQueryWrapper<T> wrapper = new LambdaQueryWrapper<>();wrapper.eq(T::getName, "wonwoo"); // 设置删除条件,比如name字段等于"wonwoo"baseMapper.delete(wrapper); // 删除满足条件的数据

5.根据主键id批量删除数据 int deleteBatchIds(@Param(“coll”) Collection<? extends Serializable> idList)

   Collection<? extends Serializable> idList = Arrays.asList(1L, 2L, 3L); // 要删除的实体的主键ID列表baseMapper.deleteBatchIds(idList); // 批量删除数据

6.根据主键id更新数据 int updateById(@Param(“et”) T entity)

   T entity = new T(); // 创建实体对象entity.setId(1L); // 设置要更新的实体的主键IDbaseMapper.updateById(entity); // 更新数据

7.高级查询根据条件更新数据 int update(@Param(“et”) T entity, @Param(“ew”) Wrapper updateWrapper)

   T entity = new T(); // 创建实体对象// 创建Wrapper对象,设置更新条件LambdaUpdateWrapper<T> updateWrapper = new LambdaUpdateWrapper<>();updateWrapper.eq(T::getName, "wonwoo"); // 设置更新条件,比如name字段等于"wonwoo"baseMapper.update(entity, updateWrapper); // 更新满足条件的数据

8.根据主键id查询数据 T selectById(Serializable id)

    Serializable id = 1L; // 要查询的实体的主键IDT entity = baseMapper.selectById(id); // 查询数据

9.根据主键ID批量查询数据 List selectBatchIds(@Param(“coll”) Collection<? extends Serializable> idList)

    Collection<? extends Serializable> idList = Arrays.asList(1L, 2L, 3L); // 要查询的实体的主键ID列表List<T> entityList = baseMapper.selectBatchIds(idList); // 批量查询数据

10.根据条件查询数据 List selectByMap(@Param(“cm”) Map<String, Object> columnMap)

    Map<String, Object> columnMap = new HashMap<>();columnMap.put("name", "wonwoo"); // 设置查询条件,比如name字段等于"wonwoo"List<T> entityList = baseMapper.selectByMap(columnMap); // 查询满足条件的数据

11.根据条件查询单条数据 T selectOne(@Param(“ew”) Wrapper queryWrapper)

    // 创建Wrapper对象,设置查询条件LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(T::getName, "wonwoo"); // 设置查询条件,比如name字段等于"wonwoo"T entity = baseMapper.selectOne(queryWrapper); // 查询满足条件的数据

12.根据条件查询数据总数 Integer selectCount(@Param(“ew”) Wrapper queryWrapper)

    // 创建Wrapper对象,设置查询条件LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(T::getName, "wonwoo"); // 设置查询条件,比如name字段等于"wonwoo"int count = baseMapper.selectCount(queryWrapper); // 查询满足条件的数据总数

13.根据条件查询数据列表 List selectList(@Param(“ew”) Wrapper queryWrapper)

    // 创建Wrapper对象,设置查询条件LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(T::getAge, 18); // 设置查询条件,比如age字段等于18List<T> entityList = baseMapper.selectList(queryWrapper); // 查询满足条件的数据列表

14.根据条件查询数据列表,并返回Map集合 List<Map<String, Object>> selectMaps(@Param(“ew”) Wrapper queryWrapper)

    // 创建Wrapper对象,设置查询条件LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(T::getAge, 18); // 设置查询条件,比如age字段等于18List<Map<String, Object>> mapList = baseMapper.selectMaps(queryWrapper); // 查询满足条件的数据列表,并返回Map集合

15.根据条件查询的父类 List selectObjs(@Param(“ew”) Wrapper queryWrapper)

16.根据条件分页查询数据 <E extends IPage> E selectPage(E page, @Param(“ew”) Wrapper queryWrapper)

    // 创建Wrapper对象,设置查询条件LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(T::getAge, 18); // 设置查询条件,比如age字段等于18Page<T> page = new Page<>(1, 10); // 创建分页对象,设置当前页和每页显示数量IPage<T> pageResult = baseMapper.selectPage(page, queryWrapper); // 分页查询满足条件的数据List<T> entityList = pageResult.getRecords(); // 当前页的数据列表long total = pageResult.getTotal(); // 总记录数

17.根据条件分页查询(返回Map结果)<E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param(“ew”) Wrapper queryWrapper)

Page<Map<String, Object>> mapPage = userMapper.selectMapsPage(page, queryWrapper);

总结

public interface UserMapper extends BaseMapper<User> {// 这里继承了BaseMapper中的所有方法,可以直接使用
}@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public void example() {// 1. 根据ID查询User user1 = userMapper.selectById(1L);// 2. 插入数据User user = new User();user.setName("wonwoo");userMapper.insert(user);// 3. 更新数据user.setName("dk");userMapper.updateById(user);// 4. 根据ID删除userMapper.deleteById(user.getId());// 5. 根据条件查询QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("name", "dk");List<User> users = userMapper.selectList(queryWrapper);// 6. 根据条件查询(返回Map结果)Map<String, Object> map = userMapper.selectMaps(queryWrapper);// 7. 根据条件分页查询Page<User> page = new Page<>(1, 10);queryWrapper.eq("name", "dk");Page<User> userPage = userMapper.selectPage(page, queryWrapper);// 8. 根据条件分页查询(返回Map结果)Page<Map<String, Object>> mapPage = userMapper.selectMapsPage(page, queryWrapper);// 9. 根据ID批量查询List<User> usersByIds = userMapper.selectBatchIds(Arrays.asList(1L, 2L, 3L));// 10. 根据条件查询一条数据User one = userMapper.selectOne(queryWrapper);// 11. 根据条件查询总记录数Integer count = userMapper.selectCount(queryWrapper);// 12. 根据ID批量删除userMapper.deleteBatchIds(Arrays.asList(1L, 2L, 3L));// 13. 根据条件批量删除userMapper.delete(queryWrapper);// 14. 根据ID批量更新user.setName("wonwoo");userMapper.updateById(user);// 15. 根据条件批量更新user.setName("dk");userMapper.update(user, queryWrapper);// 16. 根据ID批量插入userMapper.insertBatch(Arrays.asList(user1, user2));

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

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

相关文章

【资料分享】基于单片机大气压监测报警系统电路方案设计、基于飞思卡尔的无人坚守点滴监控自动控制系统设计(程序,原理图,pcb,文档)

基于单片机大气压监测报警系统电路方案设计 功能&#xff1a;实现的是大气压检测报警系统&#xff0c;可以通过传感器实时检测当前大气压值&#xff0c;可以设定大气压正常范围&#xff0c;当超过设定范围进行报警提示。 资料&#xff1a;protues仿真&#xff0c;程序&#x…

二进制安全虚拟机Protostar靶场(7)heap2 UAF(use-after-free)漏洞

前言 这是一个系列文章&#xff0c;之前已经介绍过一些二进制安全的基础知识&#xff0c;这里就不过多重复提及&#xff0c;不熟悉的同学可以去看看我之前写的文章 heap2 程序静态分析 https://exploit.education/protostar/heap-two/#include <stdlib.h> #include &…

一图窥探RAG技术发展现状

2023年除了大语言模型&#xff0c;听到最多的当属RAG&#xff08;检索增强生成技术了&#xff09;&#xff0c;在实际业务场景落地过程中&#xff0c;由于大模型目前的一定局限和能力现状以及Token限制、训练成本等多种因素的影响下&#xff0c;RAG不得不成为大家选择快速试错、…

【多模态大模型】跨越视觉-语言界限:BLIP的多任务精细处理策略

BLIP 核心思想MED架构和CapFilt方法效果 总结CLIP模型 VS BLIP模型CLIP模型BLIP模型 核心思想 论文&#xff1a;https://proceedings.mlr.press/v162/li22n/li22n.pdf 代码&#xff1a;https://github.com/salesforce/BLIP BLIP&#xff08;Bootstrapping Language-Image Pre…

C语言笔试题之实现C库函数 pow()(递归的思想)

实例要求&#xff1a; 1、请你实现C库函数 pow()&#xff08;stdio.h & math.h&#xff09; &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即x^n &#xff09;&#xff1b;2、函数声明&#xff1a;double myPow(double x, int n)&#xff1b;参数&#xff1a;1、x …

JavaScript 入门

目录 第一个知识点&#xff1a;引入js文件 内部引用: 外部引用: 第二个知识点&#xff1a;javascript的基本语法 定义变量&#xff1a; 条件控制(if - else if - else) 第三个知识点&#xff1a;javascript里的数据类型、运算符&#xff1a; 数字类型 字符串类型 布尔…

fwrite、fread、fprintf、fsanf以及流的定位——标准IO——day3

今天主要讲一下这四个函数接口&#xff1a;fwrite、fread、fprintf、fsancf以及流的定位&#xff1a;ftell、rewind、fseek 函数接口 fwrite fwrite:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); 功能:向流中写入nmemb个对象,每个对象size字节…

[word] word小数点对齐怎么设置 #微信#其他#其他

word小数点对齐怎么设置 使用Word编辑文档的时候&#xff0c;如果有小技巧的话&#xff0c;可以解决很多遇到的问题&#xff0c;也让工作更高效的完成&#xff0c;下面给大家分享word小数点对齐怎么设置的小技巧。 1、设置格式 选中内容&#xff0c;点击段落一一制表符&#…

S3 Browser工具得使用

新增账号 如果需要设置签名得版本&#xff0c;选择上图右下角得advanced setting

【算法设计与分析】求根节点到叶节点数字之和

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数…

python多进程共享字典方案

三者对比 先给出demo代码: import time from multiprocessing import Managerfrom UltraDict import UltraDictdef mul():t1 time.time()d Manager().dict()t2 time.time()for i in range(100000):d[i] iprint(f"[multiple] insert value: {time.time() - t2} s&quo…

【深度学习: AutoAugment】使用 AutoAugment 提高深度学习性能

【深度学习&#xff1a; AutoAugment】使用 AutoAugment 提高深度学习性能 结果 深度学习在计算机视觉领域的成功可以部分归因于大量标记训练数据的可用性——随着训练数据的质量、多样性和数量的增加&#xff0c;模型的性能通常会提高。然而&#xff0c;收集足够的高质量数据来…