【第10章】MyBatis-Plus持久层接口之Db Kit

文章目录

  • 前言
  • 一、使用示例
  • 二、使用提示
  • 总结


前言

Db Kit 是 Mybatis-Plus 提供的一个工具类,它允许开发者通过静态调用的方式执行 CRUD 操作,从而避免了在 Spring 环境下可能出现的 Service 循环注入问题,简化了代码,提升了开发效率。

Db Kit 的完整使用方式可以参考官方测试用例。

  • 使用 Db Kit 前,需要确保项目中已注入对应实体的 BaseMapper。
  • 当参数为 Wrapper 时,需要在 Wrapper 中传入 Entity 或者 EntityClass,以便寻找对应的 Mapper。
  • 不建议在循环中频繁调用 Db Kit 的方法,如果是批量操作,建议先将数据构造好,然后使用 Db.saveBatch(数据) 等批量方法进行保存。

一、使用示例

// 假设有一个 User 实体类和对应的 BaseMapper// 根据 id 查询单个实体
User user = Db.getById(1L, User.class);// 根据 id 查询多个实体
List<User> userList = Db.listByIds(Arrays.asList(1L, 2L, 3L), User.class);// 根据条件构造器查询
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery(User.class).eq(User::getStatus, "active");
List<User> activeUsers = Db.list(queryWrapper);// 插入新实体
User newUser = new User();
newUser.setUsername("newUser");
newUser.setAge(25);
boolean isInserted = Db.insert(newUser);// 根据 id 更新实体
User updateUser = new User();
updateUser.setId(1L);
updateUser.setUsername("updatedUser");
boolean isUpdated = Db.updateById(updateUser);// 根据条件构造器更新
LambdaUpdateWrapper<User> updateWrapper = Wrappers.lambdaUpdate(User.class).set(User::getAge, 30).eq(User::getUsername, "updatedUser");
boolean isUpdatedByWrapper = Db.update(null, updateWrapper);// 根据 id 删除实体
boolean isDeleted = Db.removeById(1L,User.class);// 根据条件构造器删除
LambdaDeleteWrapper<User> deleteWrapper = Wrappers.lambdaDelete(User.class).eq(User::getStatus, "inactive");
boolean isDeletedByWrapper = Db.remove(deleteWrapper);// 批量插入
List<User> batchUsers = Arrays.asList(new User("user1", 20),new User("user2", 22),new User("user3", 24)
);
boolean isBatchInserted = Db.saveBatch(batchUsers);// 批量更新
List<User> batchUpdateUsers = Arrays.asList(new User(1L, "user1", 21),new User(2L, "user2", 23),new User(3L, "user3", 25)
);
boolean isBatchUpdated = Db.updateBatchById(batchUpdateUsers);

插入方法由insert改为save
LambdaDeleteWrapper已被移除,使用LambdaUpdateWrapper
执行删除时抛出异常:- com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: java.lang.Long Not Found TableInfoCache.,使用Db.removeById(1L,User.class);

二、使用提示

  • Db Kit 提供了一系列静态方法,可以直接调用进行数据库操作,无需通过 Service 层,简化了代码结构。
  • 在使用 Db Kit 时,确保传入的参数正确,特别是当使用 Wrapper 时,需要指定实体类或实体对象。
  • 对于批量操作,如批量插入或更新,建议使用 Db Kit 提供的批量方法,以提高效率。
  • 避免在循环中频繁调用 Db Kit 的方法,这可能会导致性能问题。

通过使用 Db Kit,开发者可以更加高效地执行数据库操作,同时保持代码的简洁性和可读性。这种工具类尤其适合于简单的 CRUD 操作,可以大大减少重复代码的编写。


总结

回到顶部

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

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

相关文章

计算经纬度坐标之间的真实距离

要计算两组经纬度坐标之间的距离&#xff0c;我们可以使用大地测量学中的公式&#xff0c;例如Haversine公式或者更精确的Vincenty公式。这里我将使用Haversine公式&#xff0c;因为它适用于小范围内的距离计算&#xff0c;且计算相对简单。 Haversine公式的基本形式如下&…

计算机视觉 | 基于 PointNet 网络的飞机零件 3D 点云分割

目录 一、简要介绍二、环境设置2.1 实验配置2.2 必要库安装 三、数据集解析3.1 数据集加载3.2 数据文件夹结构3.3 点云数据可视化3.4 数据获取与预处理3.5 数据集定义 四、模型组网4.1 PointNet 介绍4.2 Paddle模型组网4.3 模型概要 五、模型训练六、模型预测七、总结 Hi&#…

2.1 程序设计语言基础

程序设计语言概述 常见的编程语言 编译和解释 程序设计语言的基本成分 数据成分、运算成分、控制成分、传输成分 函数 传值调用、传址调用 编译程序基本原理

使用Python实现一个简单的密码管理器

文章目录 一、项目概述二、实现步骤2.1 安装必要的库2.2 设计密码数据结构2.3 实现密码加密和解密2.4 实现主要功能2.4.1 添加新密码2.4.2 显示所有密码2.4.3 查找特定密码2.4.4 更新密码2.4.5 删除密码 2.5 实现用户界面 三、代码示例3.1 加密和解密示例3.2 用户界面示例 在现…

window上部署sql server改动端口、和sqlserver的一些还原、批量插入存储过程的命令

1.端口的查看和启动 --windows上安装上sql server数据库后&#xff0c;搜索界面搜索sql&#xff0c;会出现配置管理器&#xff0c;点击进入 --进入后再次选择配置管理器 2. sqlserver数据库还原图形化 sqlserver还原数据库时会使数据库进入一个restore的还原状态&#xff0c;…

昇思25天学习打卡营第6天|Vision Transformer

文章目录 昇思MindSpore应用实践基于MindSpore的Vision Transformer1、Vision Transformer&#xff08;ViT&#xff09;简介网络结构 2、Attention模块Encoder部分用到的功能函数&#xff1a;整体构建ViT模型 3、模型训练4、模型验证 Reference 昇思MindSpore应用实践 本系列文…

前端无感登录(无感刷新token)

1. 在响应器中拦截&#xff08;判断token返回过期后&#xff0c;调用刷新token的接口&#xff09; 2. 后端返回过期时间&#xff0c;前端判断token的过期时间&#xff0c;去调用刷新token的接口 3. 写定时器&#xff0c;定时刷新token接口 流程&#xff1a; 1. 登录成功后保存两…

降薪20%,那些压力山大的事情

1.开会一天&#xff0c;研发工作没完成&#xff0c;怎么办&#xff1f;&#xff1f; 2.项目接手&#xff0c;一堆问题等着处理怎么办&#xff1f; 3.产品研发&#xff0c;客户验收&#xff0c;公司要求&#xff0c;同事间相互的配合&#xff0c;完成一件事那么难&#xff0c;…

数据结构和顺序表

什么是数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 数据元素的三要素 数据结构包括三方面的内容&#xff1a;逻辑结构、存储结构、数据的运算。 逻辑结构 逻辑结构是指数据元素之间的逻辑关系&#xff0c;即从逻辑关系上描述数据。数据的逻辑结…

Android 第三方组件整理

Banner图&#xff1a; me.militch:banner-holder 注解&#xff1a; com.jakewharton:butterknifecom.jakewharton:butterknife-compiler 拼音&#xff1a; com.github.promeg:tinypinyin 日期: com.haibin:calendarview 二维码扫码&#xff1a; com.journeyapps:zxing…

跨过45分门槛,单独划线让软考证书可能失而复得

在软考的竞技场上&#xff0c;分数是拿证的那道坎&#xff0c;那就是45分&#xff01;但别急&#xff0c;故事总有转折&#xff0c;国家为了那些在乡村振兴道路上奋力追赶的地区&#xff0c;特别开启了一扇窗——单独划线政策。 单独划线地区分数线并不是固定的&#xff0c;届时…

linux网络命令:httpie详解-简单易用的命令行 HTTP 客户端

目录 一、命令概述 二、基本特点 1、直观和友好的命令语句 2、内置 JSON 支持 3、支持多种请求方法 4、支持 HTTPS、代理和授权验证 5、支持多种请求数据格式 6、自定义 headers 头 7、持久 sessions 存储 8、插件支持 三、安装 1、对于基于 Debian 的系统&#xf…

MQ运行时遇到的问题

遇到的问题描述&#xff1a;我在绑定通道的时候发现了通道绑定失败&#xff0c; 原因&#xff1a; 在代码中我第一次创建交换机的时候类型的默认没有修改成topic类型的&#xff0c;导致后面的代码再去进行注册的时候并没有实现那个类型 解决&#xff1a; 更改代码&#xff0…

中介子方程三十九

XXFXXuXXWXXuXXdXXrXXαXXuXpXXKXηXiXXnXXyXηXuXXrXXaXXrXXuXηXyXXnXXiXηXKXXpXuXXαXXrXXdXXuXWXπXXWXeXyXeXbXπXpXXNXXqXeXXrXXαXXuXpXXKXηXiXXnXXyXηXuXXrXXaXXrXXuXηXyXXnXXiXηXKXXpXuXXαXXrXXeXqXXNXXpXπXbXeXyXeXWXXπXWXuXXdXXrXXαXXuXpXXKXηXiXXnXXyXη…

昇思25天学习打卡营第8天|保存与加载

当模型训练好以后&#xff0c;就可以用来预测了。后续我们在其他端部署的时候不需要再次训练&#xff0c;直接使用训练好的模型进行推理就可以了。 在保存和加载的时候我们都需要传入模型。保存的API是save_checkpoint(model,path), 对应的加载的API是 load_checkpoint(model,…

Java实现发送邮件

引入jar包 <dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version></dependency># 发送邮件配置 mail:smtp:host: smtp.163.comport: 25auth: trueusername: 139*****163.…

vue3+ el-upload封装上传组件

组件功能介绍 上传格式限制上传大小限制上传文件数量限制自定义上传区上传成功回调禁用上传开关与点击上传自定义事件暴露所以上传文件列表&#xff08;uploadList&#xff09;与当前文件数据&#xff08;uploadLatestFile&#xff09; 组件代码Upload.vue <template>&l…

启航数据科学:Jupyter Notebook安装全攻略,轻松入门!

目录 简介安装步骤 安装Python安装pip安装Jupyter Notebook 启动Jupyter Notebook基本使用常见问题总结 简介 Jupyter Notebook 是一个交互式的笔记本环境&#xff0c;支持运行和展示 Python 代码&#xff0c;以及文本、图表和公式。它广泛应用于数据分析、机器学习和科学计算…

在Stimulsoft 报告中连接来自 MySQL 的数据

Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能&#xff0c;Stimulsoft Ultimate包含了…

Firewalld 防火墙基础

Firewalld 防火墙基础 一、Firewalld概述firewalld 简介firewalld 和 iptables 的关系firewalld 与 iptables service 的区别 二、Firewalld 网络区域区域介绍Firewalld数据处理流程 三、Firewalld 防火墙的配置方法firewall-config 图形工具“区域”选项卡“服务”选项卡改变防…