开发者社区> 问答> 正文

能否将Jfinal再简化一些?? 400 报错

能否将Jfinal再简化一些?? 400 报错

@JFinal 你好,想跟你请教个问题:有一事请教,JFinal要对数据库中的每张表生成一个controler(或者是做成model),每个类几乎一模一样,又要为每张表做增删改查的界面,如果你有100张表就要400个界面+至少100个java类,这不是要吐血吗?能否将数据库每张表的信息(要包括表名、字段名、字段类型、在界面显示的名称、在界面用何种控件显示、是否要编辑)做成json或者java数组形式储存在一个文件中,然后写个调用增删改查通用类根据前台信息调用或生成json回传就行了?freemarker完全没有存在的必要,只要用json把数据传到前台,用extjs、easyUI或者DWZ之类的前台处理界面不是更好吗?如果是多表查询直接传SQL到后台就行了,sql也放在json或者java数组中?本来我想用jfinal写个代码生成器,我去看了一个绝望的八皮的源码,但发现重复代码太多了,想先改进再做。如果我的思路错了,请指点迷津。

人生有限,何必浪费在代码重复。

展开
收起
爱吃鱼的程序员 2020-05-31 00:39:57 452 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

          jfinal 从第一个版本开始就已经支持楼主的需求了,jfinal 提供了 Db + Record 模式,可以极度方便地解决你的问题,Record 可以对应所有的表,也无需添加映射,她相当于一个通用的 Model,对数据库操作直接调用 Db 中的API 或者直接 Db.xxx(sql, p) 即可。

         以上解决了楼主提出的 Model 多或者重复的问题(其实也没多少重复,因为一个Model就一行代码而已:class MyModel extends Model)。至于楼主说的 Controller 很多,可以使用一个通用的 controller,然后前端通过传参将 tableName 传送过来,这样就可以使用这同一个 controller 利用 Db + Record 模式对任意的 table 进行 CRUD 操作了。

         对于页面来说,如果用一些只需 json 数据的前端解决方案来说,只接 renderJson() 即可,其它情况可以使用 Freemarker 模板,仅仅使用四五个页面即可解决任意数据表的 CRUD。

         总结一下,JFinal 提供了一个极简的基本框架供工程师使用,具体怎么用要看工程师各自的发挥了。

    ######

    表和controller 有什么关系呢?不是所有的表都要去做一个model,我很多关系比较弱的表直接用Record来操作

    ######为何不搞通用类呢?坏处在哪里?什么叫关系弱?######

    你这考虑的就不对啊

    难道所有人都用extjs?

    ######这是做后台,不重复的就生成吧######

    多谢指教。对于freemarker我还是持保留意见,它是服务器端的模板引擎,不可能满足前端用户的各种需求。还不如直接由json把数据交给前端的js框架,客户要怎么展示就怎么展示。Db + Record 模式不知道是不是少了一次java对前端数据的检查,而是把数据直接交给数据库检查?有了DB+Record为什么还要model?model模式是不是操作数据库前要从数据库里调用一下各个字段的属性对数据进行检查,然后再把数据传给数据库crud?这种模式也会增加数据库的一些负担。

    ######我对你的观点理解是:你想让JFinal完全支持只用极少代码来实现CRUD这种情况。 如果我猜想说得对,那么,我想说,人生不止是衣食住行,还有娱乐、结婚生子等。而JFinal不仅让你可以衣食住行,还能让你有娱乐并结婚生子。并且让你自己可以创造各种衣食住行、娱乐、结婚生子的方式,而不是通过限制,让所有人只存在一种衣食住行、娱乐、结婚生子的方式。######对于model来说,如果能少写几行代码更好。######

    个人拙见:

    1. freemarker是一个插件(但是是default的render),但是如果你手动调用renderJson() 就会返回json。一般做服务的时候,我也是不用freemarker的。

    2. 我感觉Db + Record 模式应该和前端没有关系的,看你怎么在前端把数据给后端处理

    3. 有了DB+Record为什么还要model: DB+Record是一个通用的工具,如果用model,你可以定义自己的object。如果系统比较复杂,通过定义,处理自己的类来实现更复杂的功能。

    4. 最后一个问题,我不太清楚,感觉数据检测是在java端做的?@jfinal

    ######JFINAL在处理页面上传来大量错误的数据时(在遭到js脚本攻击时)究竟做了什么?如果我不写检查代码的话,承受这种攻击的是应用服务器还是数据库服务器?在受错误数据攻击时,使用model和使用DB+recorder模式有什么区别?(注意:是程序员在java中没有写数据类型的检查代码时。)######每多写一行重复的代码都是犯罪。
    2020-05-31 00:40:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战 立即下载
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题) 立即下载
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载