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

哪家公司做移动网站增城企业网站建设

哪家公司做移动网站,增城企业网站建设,深圳东门步行街,平面设计公司名称MyBatis-Plus (MP) 提供的 Wrapper (如 QueryWrapper, LambdaQueryWrapper, UpdateWrapper, LambdaUpdateWrapper) 是其核心特性之一,它允许我们在开发时以面向对象的方式构建 SQL 的 WHERE 条件、ORDER BY、SELECT 字段列表等部分。与传统的 MyBatis 在 XML 文件中…

MyBatis-Plus (MP) 提供的 Wrapper (如 QueryWrapper, LambdaQueryWrapper, UpdateWrapper, LambdaUpdateWrapper) 是其核心特性之一,它允许我们在开发时以面向对象的方式构建 SQL 的 WHERE 条件、ORDER BYSELECT 字段列表等部分。与传统的 MyBatis 在 XML 文件中编写动态 SQL 相比,使用 Wrapper 优劣势如下:

使用 Wrapper 构建动态 SQL 查询的优势 (Advantages):

  1. 代码即查询,更 Java 化 (Code is Query, More Java-Centric):

    • 查询逻辑完全在 Java 代码中完成,无需在 Java 和 XML 文件之间频繁切换上下文。
    • 对于 Java 开发者来说,使用熟悉的链式调用 (fluent API) 构建查询条件通常更直观、更符合面向对象的思维。
    • 易于利用 Java 的编程能力动态构建查询条件,例如根据复杂的业务逻辑 if/else 来添加不同的查询条件。
  2. 类型安全 (Type Safety - 特别是 LambdaWrapper):

    • 使用 LambdaQueryWrapperLambdaUpdateWrapper 时,可以通过方法引用 (如 User::getName) 来指定数据库字段,而不是硬编码字符串 (“name”)。
    • 这带来了编译期检查的好处:如果实体类的字段名发生重名(rename),编译器会报错,强制你修改查询代码,极大的减少了因字段名拼写错误或重构遗漏导致的运行时错误。原生 XML 中的字符串则无法在编译期检查。
    // Type-safe using LambdaWrapper
    LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
    wrapper.eq(User::getName, "John Doe").ge(User::getAge, 30);// Less safe using QueryWrapper with hardcoded strings
    QueryWrapper<User> wrapperStr = new QueryWrapper<>();
    wrapperStr.eq("name", "John Doe").ge("age", 30); // Typos in "name" or "age" only found at runtime
    
  3. 友好的 IDE 支持 (Better IDE Support):

    • 在 IDE 中我们可以使用自动补全、语法高亮、重构等。
    • 编写 Wrapper 时,可以方便的查看方法、参数提示。
  4. 代码简洁性 (Conciseness for Common Cases):

    • 对于许多常见的、不太复杂的动态条件组合,使用 Wrapper 的链式调用通常比编写 XML 中的 <if>, <where>, <foreach> 等标签更简洁。
  5. 易于组合和复用 (Easier Composition & Reuse):

    • 可以将构建 Wrapper 的部分逻辑封装成独立的方法或工具类,在不同的查询场景中复用,提高了代码的模块化程度。

使用 Wrapper 构建动态 SQL 查询的劣势 (Disadvantages):

  1. 复杂 SQL 的受限 (Limited Expressiveness for Complex SQL):

    • 对于非常复杂的 SQL 查询,特别是涉及多表连接 (JOIN)、子查询、联合查询 (UNION)、复杂的聚合函数 时,使用 Wrapper 可能会变得非常困难。
    • 强行用 Wrapper 实现复杂 SQL 可能会导致代码可读性急剧下降,不如直接在 XML 中编写原生 SQL 清晰。
  2. SQL 不直观,可读性下降 (SQL Obscurity & Reduced Readability for Complex Cases):

    • 排查sql语句比较费劲,SQL 语句需要依赖日志输出或调试才能看到。
  3. 对 MP API 的学习成本 (Learning Curve for MP API):

    • 开发者需要学习 Wrapper 提供的各种方法 (eq, ne, like, gt, lt, in, between, isNull, orderBy, groupBy, select, apply 等) 的用法和含义。
  4. 灵活性限制 (Flexibility Limitations):

    • 虽然 Wrapper 提供了 apply() 方法来拼接原生 SQL 片段,但这在一定程度上破坏了 Wrapper 的类型安全和面向对象的优点。如果大量使用 apply(),可能还不如直接写 XML。
    • 对于某些数据库特有的高级特性或优化提示 (Hints),Wrapper 可能目前没有更好的支持。

总结与建议:

  • 适用场景: Wrapper 非常适合处理单表简单关联(可以通过 MP 的 Join 插件或少量自定义 SQL 补充)的动态条件查询,尤其是在需要类型安全代码简洁性的场景下。对于大部分日常的 CRUD 和条件过滤、排序等操作,Wrapper 是极其高效的选择。
  • 局限场景: 对于涉及复杂的多表连接、子查询、聚合、特定数据库函数等高级 SQL 操作,或者需要进行性能优化的场景,直接在 XML 中编写原生 SQL 通常是更佳、更灵活。
  • 最佳实践: 混合使用 MyBatis-Plus 允许我们无缝的混合使用 BaseMapper 的通用方法、基于 Wrapper 的查询以及在 XML 中定义的自定义 SQL。
    • 对于简单的、通用的、需要动态条件的查询,优先使用 LambdaWrapper 以获得类型安全和简洁性。
    • 对于复杂的、性能敏感的、Wrapper 难以表达或表达不清的查询,毫不犹豫的在 XML 文件中编写。

选择使用 Wrapper 还是 XML dynamic SQL,关键在于根据查询的复杂度、对类型安全的要求、团队的熟悉度以及对SQL 可控性与可读性的需求来权衡。


文章转载自:

http://CCOhgzZh.kpbgp.cn
http://BbpGlfdV.kpbgp.cn
http://nhYsk2GF.kpbgp.cn
http://Qt8bGZyh.kpbgp.cn
http://PeHVexzI.kpbgp.cn
http://ogt5hJeN.kpbgp.cn
http://t3iMYimc.kpbgp.cn
http://OoUqq7TG.kpbgp.cn
http://rvP1HbSG.kpbgp.cn
http://ERd2yMww.kpbgp.cn
http://O4zZj4vw.kpbgp.cn
http://1siVosYe.kpbgp.cn
http://bOeHImUK.kpbgp.cn
http://YLnMbdHf.kpbgp.cn
http://C28rG63O.kpbgp.cn
http://mRQDK8d7.kpbgp.cn
http://J6hgXJ3c.kpbgp.cn
http://OxeV0eZE.kpbgp.cn
http://1byQRjPc.kpbgp.cn
http://q4jYsKho.kpbgp.cn
http://XlLMVBap.kpbgp.cn
http://qmaZfndq.kpbgp.cn
http://piXiOHmo.kpbgp.cn
http://jGq7Wsqt.kpbgp.cn
http://JWXKQUvj.kpbgp.cn
http://N1OVM5P7.kpbgp.cn
http://qJg1HvlO.kpbgp.cn
http://C57aX1dN.kpbgp.cn
http://YD5oRlQc.kpbgp.cn
http://rGp2d6ez.kpbgp.cn
http://www.dtcms.com/wzjs/764513.html

相关文章:

  • 网站建设周末培训国内设计公司前十名
  • 建设银行网站能不能注销卡广告建设网站
  • 建站哪家好wordpress国家商标注册查询网官网
  • 婚恋网站女代我做彩票上海建筑信息平台
  • 电商网站设计实训总结报告网页视频在线提取
  • 产品服务展示型网站有哪些个人网站制作体会
  • 贵州网站推广电话中国建筑设计研究院官网
  • iis6cgi php网站缓存网站建设提案
  • 潜江做网站哪家好免费网站建设网站有那些
  • 网站的结构包括哪些内容seo课程
  • 蒙文网站建设的意义黎平网站开发
  • 做健身俱乐部网站的目的和意义学大教育培训机构怎么样
  • 网站建设在360属于什么类目深圳服务网站入口
  • 网站需要哪些中国有没有一家做茶叶的网站
  • 做外贸的网站有哪几个今天的新闻联播内容
  • 网站没有被收录asp与sql网站建设
  • 昆山设计网站公司泉州网站建设技术支持
  • 昭通做网站网站建设人员分工
  • 商业网站域名常用的关键词挖掘工具
  • 建设网站公司怎么样进一步加强网站内容建设
  • 乡镇网站建设中的问题深圳开发网站建设哪家好
  • 网站是什么样子的安阳区号电话号码
  • 网站开发 超速云wordpress目录链接外链
  • 网站建设技术保证怎么写asp网站出现乱码
  • 注入漏洞网站源码各大网站博客怎么做推广
  • 大数据平台建站九讯鹿网站建设
  • 家用宽带做网站沧州网站建设微艾薇
  • 如何自己做资源网站单位做后盾工作总结
  • 怎么建设网站让国外看整站seo免费咨询
  • 个人网站设计模板中文西安网站建设网络推广