当前位置: 首页 > news >正文

做游戏模型参考的网站保定网站建设制作开发平台

做游戏模型参考的网站,保定网站建设制作开发平台,网页设计个人网站,打开小程序入口直接进入Mybatis-Plus 中 LambdaQueryWrapper 和 QueryWrapper 是两种用于构造 SQL 查询条件的工具类,它们的核心区别在于 类型安全性 和 语法简洁性。以下是详细对比及完整示例: 一、核心区别对比 特性LambdaQueryWrapperQueryWrapper类型安全✅ 编译期校验&am…

Mybatis-Plus 中 LambdaQueryWrapperQueryWrapper 是两种用于构造 SQL 查询条件的工具类,它们的核心区别在于 类型安全性语法简洁性。以下是详细对比及完整示例:


一、核心区别对比

特性LambdaQueryWrapperQueryWrapper
类型安全✅ 编译期校验(基于 Lambda 表达式)❌ 运行时校验(基于字符串表达式)
代码可读性✅ 直接引用实体类属性(如 q -> q.getAge()❌ 需手写字段名字符串(如 "age"
IDE 支持✅ 自动补全、智能提示❌ 无提示,依赖开发者记忆字段名
空值处理✅ 自动识别 null 值(无需显式判断 isNull)❌ 需手动拼接 isNullisEmpty
适用场景✅ 新项目优先推荐✅ 兼容旧版 Mybatis-Plus(<=2.x)

二、完整示例演示

1. 环境准备
// 实体类 User
@Data
public class User {private Long id;private String name;private Integer age;
}// Mapper 接口
public interface UserMapper extends BaseMapper<User> {}
2. 使用 QueryWrapper(传统方式)
// 注意:字段名必须与数据库一致,否则会抛出异常!
@Test
void testQueryWrapper() {// 创建 QueryWrapper 实例QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("name", "Tom")   // 字段名需严格匹配数据库列名.ge("age", 18)        // 年龄大于等于 18.likeRight(true, "name", "J"); // 模糊查询(右侧匹配)// 执行查询List<User> users = userMapper.selectList(queryWrapper);users.forEach(System.out::println);
}
3. 使用 LambdaQueryWrapper(推荐方式)
@Test
void testLambdaQueryWrapper() {// 创建 LambdaQueryWrapper 实例(泛型推断更安全)LambdaQueryWrapper<User> lambdaQuery = new LambdaQueryWrapper<>();lambdaQuery.eq(User::getName, "Tom")      // 方法引用,自动获取字段名.ge(User::getAge, 18)          // 年龄 >= 18.likeRight(User::getName, "J"); // 模糊查询(右侧匹配)// 执行查询List<User> users = userMapper.selectList(lambdaQuery);users.forEach(System.out::println);
}
4. 关键差异解析
  • 类型安全示例
    如果修改实体类字段名(如将 name 改为 userName),LambdaQueryWrapper 会在编译时报错,而 QueryWrapper 仅在运行时报错:

    // 错误示范(会导致编译失败):
    lambdaQuery.eq(User::getNonExistField, "value");// QueryWrapper 的错误示例(运行时才会发现):
    queryWrapper.eq("nonExistField", "value");
    
  • 空值处理优化
    LambdaQueryWrapper 自动识别 null 值,无需手动添加 isNull

    lambdaQuery.eq(User::getAge, null); // 自动转换为 IS NULL
    

三、如何选择?

  1. 新项目开发:优先使用 LambdaQueryWrapper,减少因字段名变更导致的故障。
  2. 旧项目迁移:逐步替换 QueryWrapper,利用其兼容性过渡。
  3. 复杂动态 SQL:混合使用两种 Wrapper(如 Wrapper.apply() 嵌套)。

四、扩展补充

  • 动态表名/特殊函数:仍需使用 QueryWrapper 拼接原生 SQL。
  • 性能对比:两者生成的 SQL 完全一致,性能无差异。
  • IDE 插件:安装 Lombok 增强工具可提升 Lambda 开发体验。

通过以上示例可以看出,LambdaQueryWrapper 在现代 Java 开发中具有显著优势,是 Mybatis-Plus 的最佳实践推荐方式。

http://www.dtcms.com/a/535698.html

相关文章:

  • 【IoTDB】时序数据库选型迷茫?Apache IoTDB 为何成工业场景优选?
  • Linux系统编程—线程概念与控制
  • (122页PPT)华为初级项目管理培训(附下载方式)
  • GPT-OSS-20B昇腾NPU实战:从模型转换到42.85 tokens/s性能突破
  • 大模型请求/响应参数完全拆解:每个字段都是什么意思?
  • WIFI|硬件 Vanchip射频芯片 VC5776-11设计应用6
  • Java字符串深度解析:从内存模型到常用方法全掌握
  • 1688货源网官方网站专用车网站建设多少钱
  • 网站运营的目的及意义wordpress 颜色选择器
  • 【高阶数据结构】哈希表
  • 【Qt开发】容器类控件(二)-> QTabWidget
  • 模板进阶:从非类型参数到分离编译,吃透 C++ 泛型编程的核心逻辑
  • Springboot 局域网部署https解除安全警告
  • 封装map和set(红黑树作为底层结构如何实现map和set插入遍历)
  • 如何保证RabbitMQ不出现消息丢失?
  • 购物网站建设 属于信息系统管理与设计么?一个网站的制作特点
  • 如何快速进行时间序列模型复现(以LSTM进行股票预测为例)
  • Git 远程操作:克隆、推送、拉取与冲突解决
  • Telegram 被封是什么原因?如何解决?(附 @letstgbot 搜索引擎重连技巧)
  • uniapp(1)
  • 河北建站公司优化大师的功能有哪些
  • 电力电网安全实训难题多?VR安全教育软件给出新方案
  • [MySQL]表——聚合函数
  • Java 测验
  • d42:SpringCloud单架构拆分,Nacos注册中心,OpenFeign,网关路由,配置管理
  • 构建智能对话系统:基于LangChain的超级智能体架构解析
  • 幸福指数数据分析与预测:从数据预处理到模型构建完整案例
  • 做网站要费用多少wordpress注册美化
  • 城建亚泰建设集团网站手机网站建设教程视频教程
  • 产品定制网站开发网站建设分析案例