jfinal bean属性扩展

如何在数据库字段的基础上在生成的bean里扩展属性

评论区

JFinal

2017-04-09 10:41

创建一个 MyBaseModelGenerator 继承一下 BaseModelGenerator,覆盖掉其中的genSetter 与 genGetter 方法,可以随心所欲扩展想我的属性

himans

2018-07-18 15:24

请问,如果是想扩展自动生成的model里面的findById以及deleteById等方法,加上companyId参数,除了在生成的后代Model里加方法,是否可以扩展一个中间层在Model和生成的BaseModel之间,应该修改如上所述做修改吗,好像新版本中代码有所改变?或是有其它建议?谢谢!

JFinal

2018-07-18 16:08

@himans 扩展一个中间层是最好的办法

大至上是:自建一个 public class BaseModel extends Model,然后所有原来继承 Model 的那些类改成继承 BaseModel,也就是改一下 BaseModelGenerator 生成器的模板中的那个类文件而已

在这个 BaseModel 中添加一些你认为很常用的方法

himans

2018-07-18 16:15

@JFinal 谢谢及时回复,我立即测试一下

JFinal

2018-07-18 17:23

@himans Generator 中有一个 setBaseModelTemplate(...) 可以指定生成 base model 的模板文件

你可以先将 com.jfinal.plugin.activerecord.generator 包下面原有的 base_model_template.jf 文件的内容复制出来,然后改改里面的 extends 后面的那个 Model 为你自己的 BaseModel,这样就实现了切换中间层的功能

记得搞定后回来分享一下: jfinal.com/share

himans

2018-07-18 21:22

@JFinal 模板文件修改都搞定了。也setBaseModelTemplate了,_generator执行到generate()方法时,总是报错:
Base Model Output Dir: D:\javaProjects\idea\dlhr/src/main/java/ltd/dinglan/hr/common/model/base
Exception in thread "main" java.lang.IllegalArgumentException: File not found : "ltd/dinglan/hr/common/model/ext/base_model_template.jf"
Disconnected from the target VM, address: '127.0.0.1:54674', transport: 'socket'
at com.jfinal.template.source.ClassPathSource.(ClassPathSource.java:68)
at com.jfinal.template.source.ClassPathSourceFactory.getSource(ClassPathSourceFactory.java:29)
at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:152)
at com.jfinal.template.Engine.getTemplate(Engine.java:139)
at com.jfinal.plugin.activerecord.generator.BaseModelGenerator.genBaseModelContent(BaseModelGenerator.java:112)
at com.jfinal.plugin.activerecord.generator.BaseModelGenerator.generate(BaseModelGenerator.java:102)
at com.jfinal.plugin.activerecord.generator.Generator.generate(Generator.java:268)
at ltd.dinglan.hr.common.model._Generator.main(_Generator.java:92)

Process finished with exit code 1

跟踪了代码,换回之前的路径“/com/jfinal/plugin/activerecord/generator/base_model_template.jf”就不会出错。我的路径写了好几种写法:ltd/dinglan/hr/common/model/ext/base_model_template.jf、/ltd/dinglan/hr/common/model/ext/base_model_template.jf、/src/main/java/ltd/dinglan/hr/common/model/ext/base_model_template.jf、以及全路径都不行。正调试中……

JFinal

2018-07-19 11:42

@himans 按我昨天在群里说的办法,搞定了吧?

himans

2018-07-19 12:20

@JFinal 搞定了,谢谢,正在写分享

himans

2018-07-19 13:13

@JFinal 刚才写的一大段不小心跳掉了,club可以考虑一个离线保存功能,或者在线保存草稿功能确认后再提交。

himans

2018-07-19 15:25

@JFinal 已经分享到jfinal官网,希望对大家有用。

热门反馈

扫码入社