关于接口路由配置和查询相关的建议

希望JFinal能提供和setBaseViewPath相似的配置方法,方便地配置如后台接口的统一前缀。

当前:
add("/admin/login", LoginController.class);
add("/admin/xxx", TestController.class);

期待:
setBaseApiPath("/admin");

add("/login", LoginController.class);
add("/xxx", TestController.class);


希望JFinal的finalAll方法提供追加排序的配置

如:
dao.findAll().orderBy("createAt desc");


谢谢!

评论区

杜福忠

2020-04-21 21:53

第一种需求,现有的就支持了,比如:
public void configRoute(Routes me) {
me.add(new Routes() {
@Override
public Routes add(String k, Class c, String v) {
return super.add("/admin" + k, c, v);
}
@Override
public void config() {
this.add("/login", LoginController.class);
this.add("/xxx", TestController.class);
}});

杜福忠

2020-04-21 21:58

第二个需求,建一个BaseModel然后在里面自定义各种方法查,满足项目的个性需求应该还行,我们就是这样干的,把一些项目通用的规则,内置到 BaseModel里面,方便直接调用

JFinal

2020-04-22 01:33

第一个需求可以实现,不过目前这个需求只有你一个人提出来,貌似需求不是很强烈

第二个需求,其实是我一直刻意避免的。以前多次说明过原因,我大致说一下:
1:api 调用方式代码并不比直接 sql 简单
2:api 调用方式无法实现复杂 sql ,即便可以实现,内部结构一定会极度复杂
3:where 条件如果嵌套、小扩号指定优先级的需求不好处理,例如:
where a = x and (b = y or c = z)
4:会增加学习成本,API 肯定也是要学习的。另一方面 sql 也必须要学习,所以会多学一个 api 用法。jfinal 的设计可以只学会 sql 就可以
5:其它还有一些原因,在此不再详述

当然,api 调用方式也有优点:
1:方法调用有代码提示,出错的概率比直接写 sql 要低一点
2:安全感比直接写 sql 要高一点

没有完美的设计,只有利弊权衡后的取舍

zhangtianxiao

2020-04-22 09:31

路遥_美好人生

2020-04-22 10:25

@杜福忠 谢谢你!

路遥_美好人生

2020-04-22 10:25

@JFinal 好的,波总

zzutligang

2020-04-22 11:12

@JFinal 楼主提的提一个需求确实可以考虑增加进去,第二个,个人认为没啥必要。排序放到sql里还是靠谱一些。

热门反馈

扫码入社