Db+record 已经很简单且能满足需求了,为什么要引入model和bean啊

Db+record 模式已经能快速开发实现各种操作了,为什么还要引入model和bean啊,而且model和bean感觉好难学习,还好别扭啊。

评论区

JFinal

2016-10-28 10:52

model 采用的是 ActiveRecord 设计模式,每个 model 事先与 table 建立了关联,所以很多操作会更加便捷,例如: user.set(...).set(...).save();

而 Db + Record 是 jfinal 独创的设计模式,Record 与 table 没有关联关系,所以是在调用方法时指令的,例如: Db.save("user", new Record().set(...).set(...));

Model 也是与具体某个数据源关联的,而 Record 在使用的时候如果使用非主数据源,需要使用 Db.use(...).save(...) 这种形式来切换

此外, model 可以生成 getter、setter 符合 java bean 规范,有助于整合很多依赖于 java bean 规范的第三方

Db + Record 模式更适合于那种需要灵活查询的应用场景,例如做报表的场景,报表中的数据是跨很多 table join 起来的,这种天然就与某个特定的 table 关联不大

zempty

2016-10-28 11:29

反正我非常喜欢Db+Record!

大海龟

2016-10-28 11:59

我也是,真正的快速开发

九爷同学

2016-10-29 10:54

@JFinal 我想请教下Db.use(...).save(...)这种方法,我这边有个场景,需要将生产环境的订单数据保存到测试环境数据库,我查到可以用Db.save(Config config, Connection conn, String tableName, String primaryKey, Record record)这个方法,不过我不知道其中的config和conn这两个参数应该怎么写?

zempty

2016-10-29 11:07

@九爷同学 最新的2.2已经没有Db.save(Config config,...)这个方法了。用Db.use(config_name)。
在configPlugin()方法里(下面的数据库连接串是mysql-conector-java-6.x.jar以上用的):
DruidPlugin dp_mysql = new DruidPlugin("jdbc:mysql:///jpress?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF8&useSSL=false", "root", "root");
dp_mysql.setDriverClass("com.mysql.cj.jdbc.Driver");
p.add(dp_mysql);

ActiveRecordPlugin arp_mysql = new ActiveRecordPlugin("mysql_config", dp_mysql);
arp_mysql.setShowSql(true);
p.add(arp_mysql);

在controller里:
Db.use("mysql_config").find(selectstr);

九爷同学

2016-10-29 11:12

@zempty 哦哦 原来就是重新新建一个jfinalconfig,jfinal2.2一直没更新 目前还是2.0,谢谢你指导

zempty

2016-10-29 11:42

@九爷同学 一起研究jfinal 呦

johnhan

2016-10-29 16:28

@JFinal 如果项目中存在大量sql,如何进行管理与维护呢

JFinal

2016-10-29 17:37

@johnhan sql 可以采用外部配置文件管理起来,不一定要写在代码中,为此 jfinal 提供了 com.jfinal.plugin.activerecord.Sqls.java 这个工具类来管理

此外 jfinal 2.3 会提供一个功能非常强大的 sql 管理支持,不仅可以管理,而且可以方便地动态生成带参的 sql

绝尘

2016-10-29 19:11

@JFinal 共同期待2.3

djs19960601

2016-10-31 09:11

因为新手不习惯,刚开始,我很不习惯这个DB+record,采用自动生成model模式才感觉好点。后来涉及多表查询,DB+RECORD分分钟秒杀一切。然后一般的简单查询我都不用model模式了,项目里面除了之前写的代码,基本后来全用db+record模式,这个真的很赞

Ajsgn

2016-10-31 13:37

waiting

cctvsod

2016-11-20 23:35

很不习惯sql与代码分离的方式,查看业务逻辑要在几个文件里跳来跳去,不明白有什么好,除了产品要支持多数据库的情况

咔嚓

2017-10-31 09:28

@JFinal Db+Record好用是好用,但有时会与一些前台冲突,比如DdtaTables普通Model显示在前台是没有任何问题的加了Db+Record前台接收的数据前就多了一些东西会导致无法显示。

chcode

2020-05-19 11:41

model 和 record 我都有使用,反正能用model 搞定就用model ,model搞不定就用Db+record 例如batch批量操作

JFinal

2020-05-21 17:07

@chcode 这个是极端正确的方法

Db + Record 一开始就是作为 Model 的补充存在的。例如 Model.update() 无法做到的按条件批量数据更新,而 Db.update("update ... where ...", ...) 就可以轻松做到

热门反馈

扫码入社