这个问题难道不可以咨询吗?我没理解为什么直接closed呢 https://github.com/baomidou/mybatis-plus/issues/6076

Comment From: nieqiurong

如果你想用多租户,处理项目里面所有的sql语句,那就需要sql语法解析,这个是需要时间处理耗时的,你可以注释租户插件自行去跑分对比。

Comment From: Jick-study

我没理解和租户有啥关系啊。。。。 网上人家们对比的时候没说mybatis-plus在多租户的场景下慢。 MyBatis-Plus Question: 单纯好奇性能问题(底下评论有装X的) https://blog.csdn.net/LINgZone2/article/details/131990889

Comment From: totoro52

实现方式都不一样,比较性能有啥用。。plus在拦截器那块用的都是jsqlparser,flex用的SqlProvider ,手段都不一样性能肯定不一样

Comment From: miemieYaho

他没说=他没干吗?你自己打开他的项目看看怎么配置mp的这不难吧

Comment From: huayanYu

https://www.oschina.net/news/293482

Comment From: Jick-study

https://www.oschina.net/news/293482

感谢回复~

Comment From: Jick-study

他没说=他没干吗?你自己打开他的项目看看怎么配置mp的这不难吧

水平菜看不懂源码啥的。做为CRUD开发我就是想问下性能差距不可以?

Comment From: miemieYaho

你是又没脑子人又懒,几行代码你都不愿意去翻还嘴硬,做什么开发,工地搬砖最适合你了

Comment From: VampireAchao

1. SQL解析和动态SQL生成

JSQParser是一种强大的SQL解析器,能够将SQL语句解析成可操作的抽象语法树(AST)。在MyBatis Plus中,使用JSQParser可以实现以下操作: - 动态生成和修改SQL语句:通过解析SQL,可以动态生成复杂的查询语句,适应不同的查询条件。 - SQL语句的验证和优化:在生成SQL语句之前进行验证和优化,确保生成的SQL是有效且高效的。

2. 多租户和数据权限控制

在多租户系统或需要数据权限控制的系统中,JSQParser尤为重要: - 自动添加租户ID或数据权限条件:解析SQL后,自动在查询中添加租户ID或数据权限相关的条件,确保数据隔离和安全。 - 灵活的权限策略实现:根据用户权限动态调整SQL语句,实现灵活的权限控制策略。

3. 提升代码可维护性

使用JSQParser可以使SQL处理逻辑更加清晰和规范: - 减少手写SQL的复杂度:通过程序化方式生成和修改SQL,减少手写SQL的错误和维护成本。 - 增强代码的可读性和可维护性:将SQL解析和生成的逻辑与业务逻辑分离,使代码结构更清晰,易于维护和扩展。

性能消耗及其合理性

虽然使用JSQParser会带来一定的性能消耗,但这些消耗在大多数应用场景下是可以接受的: - 性能消耗的衡量:解析和生成SQL的操作只在SQL生成阶段进行,对整体系统运行性能影响较小。 - 收益和权衡:使用JSQParser获得的灵活性和功能性(如动态SQL生成、多租户支持、数据权限控制等)远远超过了性能消耗的成本。

ORM选择的综合考量

通常,性能并不是选择ORM的唯一指标,以下方面也需综合考虑:

  1. 功能完善 MyBatis Plus不仅提供基本的CRUD操作,还增强了许多高级特性,如自动填充、逻辑删除、数据权限控制等,提高开发效率。

  2. 社区活跃 MyBatis Plus拥有活跃的开发者社区,定期发布更新和修复,提供详尽的文档和教程,开发者遇到问题时能够迅速找到解决方案,并能享受到最新的功能和改进。

  3. 企业认可和背书 MyBatis Plus已被众多企业采用,获得广泛认可。这些企业的背书不仅是对其功能和性能的认可,也是对其稳定性和可靠性的肯定。

  4. 生态系统 MyBatis Plus拥有庞大的生态系统,提供许多插件和扩展,便于与各种工具和库集成,支持多种数据库,具有良好的跨平台兼容性。

  5. 易用性和学习曲线 MyBatis Plus提供简单易用的API,降低学习曲线。对于熟悉MyBatis的开发者来说,迁移到MyBatis Plus几乎没有学习成本,其自动化和简化配置进一步减少了开发和维护的复杂度,使开发者可以专注于业务逻辑的实现。

结论

尽管在MyBatis Plus中使用JSQParser会带来一定的性能消耗,但其在SQL解析和生成、多租户支持、数据权限控制、代码可维护性等方面的优势,使这些消耗是值得的。考虑到MyBatis Plus在功能完善性、社区活跃度、企业认可度、生态系统和易用性等方面的综合优势,选择MyBatis Plus能够大幅提高开发效率和代码质量,为企业级应用开发提供坚实的基础。

Comment From: Jick-study

你是又没脑子人又懒,几行代码你都不愿意去翻还嘴硬,做什么开发,工地搬砖最适合你了

呵呵 就你这样连搬砖都不配,装什么呢?看懂几行代码你觉得你就又行了?在这找啥存在感呢?乖乖闭嘴写你的