• 北大青鸟职业教育至今已成功培养85万学子进入IT行业。
  • 目前拥有200+人的技术专家团队。
  • 理论+实践,90
  • 以上实训课程!

400-888-4846

Lombok插件使用争议深度剖析:开发者必须了解的效率与可维护性权衡

来源:成都北大青鸟 时间:09-27

Lombok插件使用争议深度剖析:开发者必须了解的效率与可维护性权衡

Lombok插件使用争议深度剖析:开发者必须了解的效率与可维护性权衡

开发工具争议的本质:效率提升与隐性成本的博弈

在Java开发领域,Lombok插件的使用与否始终是技术社区的热门议题。这个通过注解自动生成getter/setter、构造方法等模板代码的工具,自诞生起就伴随着"效率神器"与"代码毒药"的两极评价。当开发者面对每日重复编写的模板代码时,Lombok提供的注解方案确实能带来立竿见影的效率提升;但当团队协作中出现代码阅读障碍、环境配置冲突等问题时,其隐性成本又会被无限放大。

这种争议的本质,是软件开发中永恒的命题——如何在开发效率与代码可维护性之间找到平衡点。为更全面地理解这一工具的适用场景,我们需要深入分析开发者群体的真实实践反馈。

支持方观点:效率提升的现实需求

在实际开发场景中,支持使用Lombok的开发者主要基于以下实践经验:

1. 开发效率的显著提升

对于实体类占比高的项目,手动编写getter/setter、toString等方法会消耗大量时间。有开发者分享:"在一个包含50+实体类的后台系统中,每个类平均10个字段,使用Lombok @Data注解后,仅模板代码编写就节省了约3个工作日。"这种时间成本的节约,在敏捷开发模式下尤为重要。

2. 减少手误引发的潜在问题

人工编写模板代码时,字段名拼写错误、方法参数顺序颠倒等问题屡见不鲜。有测试团队统计显示:未使用Lombok的项目中,约15%的单元测试失败案例与getter/setter方法的手动编写错误相关。而使用Lombok后,这类问题的发生率下降了80%以上。

3. 代码简洁性对开发体验的优化

部分开发者提到:"面对一个包含20个字段的实体类,未使用Lombok时,类文件可能有200+行代码,其中80%是模板方法。使用注解后,类文件精简到40行左右,核心业务逻辑的可读性反而提升了。"这种代码精简带来的开发体验优化,对长期维护复杂系统的团队尤为重要。

4. 工具进化的必然性认知

有开发者从技术发展视角指出:"早期Java开发者需要手动管理内存,后来JVM接管了;早期需要手动处理JDBC连接,后来有了ORM框架。Lombok的出现,本质上是对重复劳动的又一次工具化替代。就像数码相机取代胶片机,虽然初期需要学习成本,但长期看是技术进步的体现。"

反对方顾虑:可维护性与协作成本的考量

尽管Lombok能带来效率提升,仍有大量开发者基于团队协作与长期维护的视角提出反对意见,核心关注点集中在以下方面:

1. 代码可读性的实质下降

有架构师强调:"源代码的价值不仅在于运行,更在于团队成员间的知识传递。当新成员接手使用Lombok的项目时,需要同时理解业务逻辑和注解背后的生成规则。曾遇到过实习生因不熟悉@Builder注解,错误地认为实体类存在无参构造方法,导致线上事故的情况。"

2. 环境依赖的强制性问题

开发工具链的一致性是团队协作的基础,但Lombok的使用会引入额外的环境依赖。有团队反馈:"当项目依赖包含Lombok注解的第三方库时,所有参与开发的成员都必须安装对应的IDE插件,否则代码无法编译。曾因新入职员工未及时安装插件,导致持续集成(CI)流程连续3次构建失败。"

3. 生成代码的不可控风险

尽管Lombok的注解规则相对稳定,但在某些特殊场景下仍可能出现问题。有开发者分享实际案例:"在一个涉及字段重命名的需求中,由于@Data注解自动生成的方法未同步更新,导致缓存系统与业务逻辑的数据不一致。最终花费了2天时间排查,才发现是Lombok生成的getter方法未正确更新。"

4. 与Java设计哲学的潜在冲突

部分技术专家从语言特性角度分析:"Java的设计理念之一是'显式优于隐式'。Lombok通过注解隐式生成代码,虽然简化了开发,但与这种设计哲学存在张力。当项目需要进行字节码分析或AOP编程时,隐式生成的方法可能导致预期外的结果。"

团队决策的实践建议:场景适配与规范约束

综合双方观点可见,Lombok的使用没有绝对的"正确"或"错误",关键在于与团队实际场景的适配。结合多个技术团队的成功实践,可参考以下决策框架:

1. 评估项目类型与生命周期

对于短期迭代的项目(如活动系统、原型验证),Lombok的效率提升优势更显著;对于长期维护的核心系统(如用户中心、支付系统),则需更谨慎地考虑可维护性。某金融科技公司的实践显示:核心交易系统禁止使用Lombok,而运营活动系统允许有限度使用。

2. 建立团队规范与工具链约束

决定使用Lombok的团队,需明确以下规范:
- 限制注解使用范围(如仅允许@Data用于简单实体类,@Builder用于复杂对象构造)
- 强制要求IDE插件版本统一,并在CI流程中增加Lombok编译检查
- 在代码注释中说明关键注解的使用原因,降低知识传递成本

3. 保留灵活的回退方案

建议团队配置代码生成工具(如IDE的Generate功能)作为备用方案。当遇到Lombok无法处理的特殊场景(如需要自定义getter逻辑)时,可手动生成对应方法并注释掉Lombok注解,确保代码的可维护性。某电商公司的实践显示,这种"注解为主、手动生成为辅"的策略,有效平衡了效率与灵活性。

结语:工具的本质是服务于人

Lombok插件的争议,本质上反映了开发者对"代码质量"的不同理解——有人更关注开发效率带来的业务价值,有人更重视代码的长期可维护性。无论是支持还是反对,核心目标都是通过工具优化软件开发过程。

最终的决策应基于团队的实际需求:当效率提升的收益超过潜在成本时,Lombok可以成为有效的生产力工具;当可维护性要求高于短期效率时,传统的代码生成方式可能更合适。关键在于,团队需要建立清晰的规范,让工具真正服务于开发目标,而非成为新的技术债务来源。

课程导航
校区导航
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-18 03:53:23 HTTP/1.1 GET : http://www.aabrg.com/s/3967/n/24123.html
  2. 运行时间 : 0.011991s [ 吞吐率:83.40req/s ] 内存消耗:399.04kb 文件加载:137
  3. 缓存信息 : 0 reads,0 writes
  1. /data/web/baijiao_branch_collect/public/index.php ( 0.79 KB )
  2. /data/web/baijiao_branch_collect/vendor/autoload.php ( 0.75 KB )
  3. /data/web/baijiao_branch_collect/vendor/composer/autoload_real.php ( 1.63 KB )
  4. /data/web/baijiao_branch_collect/vendor/composer/platform_check.php ( 0.90 KB )
  5. /data/web/baijiao_branch_collect/vendor/composer/ClassLoader.php ( 15.99 KB )
  6. /data/web/baijiao_branch_collect/vendor/composer/autoload_static.php ( 4.26 KB )
  7. /data/web/baijiao_branch_collect/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /data/web/baijiao_branch_collect/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /data/web/baijiao_branch_collect/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /data/web/baijiao_branch_collect/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /data/web/baijiao_branch_collect/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /data/web/baijiao_branch_collect/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /data/web/baijiao_branch_collect/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  18. /data/web/baijiao_branch_collect/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  19. /data/web/baijiao_branch_collect/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  20. /data/web/baijiao_branch_collect/app/provider.php ( 0.19 KB )
  21. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  22. /data/web/baijiao_branch_collect/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  23. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  24. /data/web/baijiao_branch_collect/app/common.php ( 10.83 KB )
  25. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  26. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  27. /data/web/baijiao_branch_collect/config/app.php ( 1.29 KB )
  28. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  29. /data/web/baijiao_branch_collect/config/cache.php ( 1.22 KB )
  30. /data/web/baijiao_branch_collect/config/config.php ( 0.26 KB )
  31. /data/web/baijiao_branch_collect/config/console.php ( 0.29 KB )
  32. /data/web/baijiao_branch_collect/config/cookie.php ( 0.56 KB )
  33. /data/web/baijiao_branch_collect/config/database.php ( 2.29 KB )
  34. /data/web/baijiao_branch_collect/config/filesystem.php ( 0.63 KB )
  35. /data/web/baijiao_branch_collect/config/lang.php ( 0.81 KB )
  36. /data/web/baijiao_branch_collect/config/log.php ( 1.37 KB )
  37. /data/web/baijiao_branch_collect/config/middleware.php ( 0.19 KB )
  38. /data/web/baijiao_branch_collect/config/route.php ( 1.54 KB )
  39. /data/web/baijiao_branch_collect/config/session.php ( 0.57 KB )
  40. /data/web/baijiao_branch_collect/config/trace.php ( 0.34 KB )
  41. /data/web/baijiao_branch_collect/config/view.php ( 0.81 KB )
  42. /data/web/baijiao_branch_collect/app/event.php ( 0.25 KB )
  43. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  44. /data/web/baijiao_branch_collect/app/service.php ( 0.13 KB )
  45. /data/web/baijiao_branch_collect/app/AppService.php ( 0.26 KB )
  46. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  47. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  48. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  49. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  50. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  51. /data/web/baijiao_branch_collect/vendor/services.php ( 0.14 KB )
  52. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  53. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  54. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  55. /data/web/baijiao_branch_collect/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  56. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  57. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  58. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  59. /data/web/baijiao_branch_collect/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  60. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  61. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  62. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.20 KB )
  63. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.75 KB )
  64. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  65. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  66. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.30 KB )
  67. /data/web/baijiao_branch_collect/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  68. /data/web/baijiao_branch_collect/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  69. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  70. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  71. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  72. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  73. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  74. /data/web/baijiao_branch_collect/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  75. /data/web/baijiao_branch_collect/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  76. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  77. /data/web/baijiao_branch_collect/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  78. /data/web/baijiao_branch_collect/vendor/topthink/think-helper/src/helper/Arr.php ( 17.45 KB )
  79. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/cache/driver/Redis.php ( 6.94 KB )
  80. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  81. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  82. /data/web/baijiao_branch_collect/app/Request.php ( 0.09 KB )
  83. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  84. /data/web/baijiao_branch_collect/app/middleware.php ( 0.26 KB )
  85. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  86. /data/web/baijiao_branch_collect/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  87. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  88. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  89. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  90. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  91. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  92. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  93. /data/web/baijiao_branch_collect/route/app.php ( 3.05 KB )
  94. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  95. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  96. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  97. /data/web/baijiao_branch_collect/app/controller/Index.php ( 33.26 KB )
  98. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/facade/Request.php ( 9.20 KB )
  99. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/route/Url.php ( 14.07 KB )
  100. /data/web/baijiao_branch_collect/app/model/IndexModel.php ( 19.95 KB )
  101. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/facade/Config.php ( 1.37 KB )
  102. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/facade/Cache.php ( 2.06 KB )
  103. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  104. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.73 KB )
  105. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/PDOConnection.php ( 53.74 KB )
  106. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  107. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  108. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  109. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/Builder.php ( 24.07 KB )
  110. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  111. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/Query.php ( 15.97 KB )
  112. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  113. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  114. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  115. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  116. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  117. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  118. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  119. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  120. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  121. /data/web/baijiao_branch_collect/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  122. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  123. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  124. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  125. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  126. /data/web/baijiao_branch_collect/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  127. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  128. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  129. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  130. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/view/driver/Php.php ( 6.44 KB )
  132. /data/web/baijiao_branch_collect/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  133. /data/web/baijiao_branch_collect/view/index/pc/school_news_details.php ( 2.39 KB )
  134. /data/web/baijiao_branch_collect/view/index/pc/school_top.php ( 5.76 KB )
  135. /data/web/baijiao_branch_collect/view/index/pc/school_right.php ( 2.17 KB )
  136. /data/web/baijiao_branch_collect/view/index/pc/school_bottom.php ( 1.16 KB )
  137. /data/web/baijiao_branch_collect/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000374s ] mysql:host=127.0.0.1;port=3306;dbname=baijiao_branch_collect;charset=utf8
  2. SHOW FULL COLUMNS FROM `fqi_school` [ RunTime:0.000956s ]
  3. SELECT * FROM `fqi_school` WHERE `school_id` = '3967' AND `site_id` = 22 AND `school_status` = 1 LIMIT 1 [ RunTime:0.000267s ]
  4. SHOW FULL COLUMNS FROM `fqi_school_class` [ RunTime:0.000581s ]
  5. SELECT * FROM `fqi_school_class` WHERE `school_id` = 3967 [ RunTime:0.000211s ]
  6. SHOW FULL COLUMNS FROM `fqi_school_campus` [ RunTime:0.000609s ]
  7. SELECT * FROM `fqi_school_campus` WHERE `school_id` = 3967 [ RunTime:0.000205s ]
  8. SHOW FULL COLUMNS FROM `fqi_school_news` [ RunTime:0.000643s ]
  9. SELECT `a`.*,`content` FROM `fqi_school_news` `a` LEFT JOIN `fqi_school_news_content` `b` ON `b`.`content_id`=`a`.`content_id` WHERE `school_id` = 3967 AND `a`.`content_id` = '24123' AND `news_status` = 1 AND `school_status` = 1 LIMIT 1 [ RunTime:0.000598s ]
  10. (select content_id,news_name,school_id from fqi_school_news where school_id = '3967' and content_id < '24123' and site_id <= '22' order by content_id desc limit 1) union all(select content_id,news_name,school_id from fqi_school_news where school_id = '3967' and content_id > '24123' and site_id <= '22' order by content_id asc limit 1) [ RunTime:0.000422s ]
  11. SHOW FULL COLUMNS FROM `fqi_school_course` [ RunTime:0.000700s ]
  12. SELECT * FROM `fqi_school_course` WHERE `school_id` = 3967 AND `site_id` = 22 AND `course_status` = 1 AND `school_status` = 1 ORDER BY `course_id` DESC LIMIT 4 [ RunTime:0.000319s ]
  13. SELECT * FROM `fqi_school_course` WHERE `school_id` = 3967 AND `school_status` = 1 AND `course_status` = 1 ORDER BY `course_id` DESC LIMIT 8 [ RunTime:0.000180s ]
  14. SELECT * FROM `fqi_school_news` WHERE `school_id` = 3967 ORDER BY `click` DESC,`news_id` DESC LIMIT 5 [ RunTime:0.000176s ]
  15. SELECT `content_id`,`news_name`,`a`.`school_id`,`b`.`school_name` FROM `fqi_school_news` `a` LEFT JOIN `fqi_school` `b` ON `b`.`school_id`=`a`.`school_id` WHERE `a`.`site_id` = '22' AND `b`.`school_status` = '1' AND `news_status` = 1 AND `content_id` < 24123 ORDER BY `content_id` DESC LIMIT 20 [ RunTime:0.002276s ]
0.012315s