首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
Db+record 已经很简单且能满足需求了,为什么要引入model和bean啊
大海龟
2016-10-28 10:03
Db+record 模式已经能快速开发实现各种操作了,为什么还要引入model和bean啊,而且model和bean感觉好难学习,还好别扭啊。
项目:
JFinal
1
1
评论区
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 ...", ...) 就可以轻松做到
回复
发送
我要反馈
热门反馈
扫码入社
而 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 关联不大