强烈建议 ActiveRecord 增加 面向对象查询功能.

      虽然现在直接写SQL语句粗暴明了,但容易出错.  如有面向对象查询功能那就更好了. 出错概率会大大降低. 也方便可读性. 

参考: http://www.jooq.org/     java版 
例如:
List<Record> list =  Db.select().from("users").orderBy(field("id").desc()).fetch();
参考: https://medoo.in php版
例如: 
 $database->select("account", "*", [id" => 100]);


 

评论区

JFinal

2019-05-01 11:15

Db.select().from("users").orderBy(field("id").desc()).fetch()
上面这种写法不如纯 sql 简洁:
Db.find("select * from users order by id desc");

从代码量上来说纯 sql 是最省的,而且 sql 还可以交给外部文件进行管理与优化:
https://www.jfinal.com/doc/5-13

此外,复杂 sql 是极端灵活的,可以一直嵌套下去,而 java 代码模式写不出需求复杂的查询来

然后, java 代码模式属于新创的东西,会增加学习成本,即便学会了使用 java 代码模式,仍然还要学会 sql,等于是多了一部分学习成本

最后,纯 sql 效率是最高的,也不会出现 java 模式带来的生成 sql 时的可能错误

仔细深想一下,java 代码模式除了能在写代码的时候带来一点点心理上的安全感以外,并没有带来实质的好处

sql 是很重要的基本功,是一定要过这一关的,通行各种数据库

lyh061619

2019-05-02 10:23

@JFinal 波总分析非常非常到位。如果使用java代码模式会出现几个问题:
第一、sql的可读性差;(用过hibernate都知道那可读性太掺了)。
第二、使用的程序员最后连基本的sql写法都给忘了,这个是极不好,不可能写写项目就甩锅,项目维护还是需要要的(代码、数据优化)等;
第三、复杂的查询完做不了,就算做得了那性能也是无法忍受得了;
第四、增加额外的学习成本,做项目的是怕的就是产生过大的技术债务,一但技术债务形成,项目随时埋雷,最后炸得不知所措;
第五、对于开发来讲,越简单的设计和架构,维护越容易;
所以还是最原始sql写法才是最纯正的,可以做到一招吃个遍。

fangjunai

2019-05-04 09:44

:) 知道了, 非常感谢二位的回复.

热门反馈

扫码入社