打算继承封装Model,让它可以在需要的时候兼容传统Java Bean模式,这样改是否可行?

打算继承封装Model,让它可以在需要的时候兼容传统Java Bean模式,这样改是否可行?

继承Jfinal Model, 保持包名,重载Jfinal Model的Set和几个put,让它可以同步更新Bean属性,是否就这样子这个Model就可以兼容Java Bean、Pojo了?

评论区

JFinal

2017-03-22 13:11

必然可行,很多小伙伴们已经在这么玩了,但玩法比你的更简单,只需要先创建一个自己的 MyModel extends Model,然后设置一下生成器的参数即可,让 BaseModel 由原来的继承 Model 改为继承你的 MyModel 即可,形成的继承结构是:
FinalModel extends BaseFinalModel extends MyModel extends Model

我这里默认了:你是知道 jfinal 的 model generator 的

cleverbug

2017-03-22 13:53

@JFinal 如果不重载set和put方法来同步bean属性的话,好像生成器生成出来没有同步bean属性吧?

cleverbug

2017-03-22 14:22

@JFinal 就是继承覆盖Jfinal Model的set和put,然后在里面通过反射同步bean属性,这样可行么?还是说我走弯路了?

cleverbug

2017-03-22 14:43

@JFinal 哦,搞混淆了,不需要的,属性也都已经有getter setter了

JFinal

2017-03-22 14:46

@cleverbug 原来你的 bean 中还有别的属性,通过引入中间 MyModel 覆盖掉 set put ,在其中使用反射可以实现

建议去掉 bean 中的属性,全部使用父类的 Model 来存放值,而且生成器也帮助生成了 setter getter 方法,外界使用 bean 的地方都是通过 getter setter 来操作的

cleverbug

2017-03-22 14:59

@JFinal 嗯,谢谢了,不过如果我需要字段名和属性名不一样,但有统一的规则,例如都有前缀后缀什么的,可以有接口处理么?

cleverbug

2017-03-22 15:15

@JFinal 主要是涉及一些新老项目的对接问题,很多老项目表名、字段名都不规范,所以如果用Model的自动映射会有问题,是否有接口?或者必须要自行在set put的时候进行替换处理?还会不会有model的其他操作地方也需要处理?

JFinal

2017-03-22 15:20

@cleverbug 如果有新旧项目对接整合,建立保持原有的 bean 不要去动,然后利用 jfinal generator 单独生成 model 层,最后做个工具类,让老的 bean 与 model 之间可以互相转换,互相协同

JFinal

2017-03-22 15:21

@cleverbug 原有的体系既然已经工作很久,若让其产生一些变化,恐有不可预测的麻烦出现

热门反馈

扫码入社