百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

扩展JFinal中的MetaBuilder(java扩展方法的三种方式)

ccwgpt 2024-10-25 10:38 51 浏览 0 评论

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!

[JFinal官网](http://www.jfinal.com/)

问题由来

JFinal 在使用Generator自动生成JavaBean类的时候,提供了以下方法:

  • Generator.addExcludedTable(添加不需要生成的表)

  • Generator.setRemovedTableNamePrefixes(设置需要被移除的表名前缀)

  • MetaBuilder.isSkipTable(通过继承并覆盖此方法,跳过一些不希望处理的 table,定制更加灵活的 table 过滤规则)

但是并没有提供如果只想生成某些特定表的情况,还好JFinal提供了扩展方法

解决思路

翻开Generator源码,看到以下代码片段:

/**

* 设置 MetaBuilder,便于扩展自定义 MetaBuilder

*/

public void setMetaBuilder(MetaBuilder metaBuilder) {

if (metaBuilder != null) {

this.metaBuilder = metaBuilder;

}

}

MetaBuilder是表结构构建的主类,而这个方法给我们提供了扩展MetaBuilder的可能。

翻开MetaBuilder源码,查看BuildTableNames方法

protected void buildTableNames(List<TableMeta> ret) throws SQLException {

ResultSet rs = getTablesResultSet();

while (rs.next()) {

String tableName = rs.getString("TABLE_NAME");

if (excludedTables.contains(tableName)) {

System.out.println("Skip table :" + tableName);

continue ;

}

if (isSkipTable(tableName)) {

System.out.println("Skip table :" + tableName);

continue ;

}

TableMeta tableMeta = new TableMeta();

tableMeta.name = tableName;

tableMeta.remarks = rs.getString("REMARKS");

tableMeta.modelName = buildModelName(tableName);

tableMeta.baseModelName = buildBaseModelName(tableMeta.modelName);

ret.add(tableMeta);

}

rs.close();

}

这个方法就是用来检测哪些表用于生成

开始扩展

1. 新建扩展类MetaBuilderExtend,继承MetaBuilder

2. 新建一个Set集合用于存放指定生成的表

protected Set<String> processedTables = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);

3. 在MetaBuilderExtend中重写方法buildTableNames,并添加以下新增代码行,用于过滤不需要生成的表

if(!processedTables.contains(tableName)) {

System.out.println("Skip table :" + tableName);

continue ;

}

4. 修改Gernerator中的默认MetaBuilder为自定义的类MetaBuilderExtend

MetaBuilderExtend metaBuilder = new MetaBuilderExtend(getDataSource());

metaBuilder.addProcessedTable("table1","table2");// 添加需要生成的表

以上。重新运行_JFinalDemoGenerator.java即可只生成table1和table2两个表的Model实例.

源码:https://github.com/baininghan/jfinal-ext/tree/master/Extended-MetaBuilder

相关推荐

PPT 139 | 粉色渐变小清新春暖花开PPT模板

春暖花开,这是你制作PPT的世界粉色渐变小清新春暖花开PPT模板,共22P适用场合:工作总结/个人汇报/演讲培训等喜欢的可以赞一个更多类似PPT模板,搜【小清新】也可以,在线编辑,一键下载...

框架完整岗位竞聘报告PPT模板

需要源文件de可私!氢元素为您提供PPT模板、PNG元素免费、办公模板。工作述职汇报、计划总结、培训课件、节日庆典、营销策划、商业计划、宣传企业、产品发布、个人简历、毕业答辩、岗位竞聘、护理培训,...

PPT与视频相关的几个操作要点

都知道PPT中可以插入视频,而2010及以上版本插入后还可以对视频做各种处理,另外别忘了还可以直接将PPT导出成视频格式。插入视频方式往PPT中插入视频,除了【插入】|【视频】|【PC上的视频】这种方...

书写主题品管圈汇报PPT模板,主题框架,简约设计,品管圈必备

Hello大家好,我是帮帮。今天跟大家分享一张书写主题品管圈汇报PPT模板,主题框架,简约设计,品管圈必备。有个好消息!为了方便大家更快的掌握技巧,寻找捷径。请大家点击文章末尾的“了解更多”,在里面找...

【教学成果框架图】国家级获奖案例解析与可视化方案(实战版)

教学成果逻辑框架图的绘制精髓总结为“逻辑为骨,视觉为翼”。下面结合具体案例,手把手教你制作既专业又美观的成果框架图。一、设计理念:教育逻辑与视觉传达的融合教学成果框架图需体现三重逻辑:教育目标层(立德...

工作总结PPT模板完整框架 (30)

年中汇报PPT的超强框架来袭,职场人士的必备神器!

这套框架堪称完美,适用于各类工作汇报场景。它逻辑清晰,内容丰富,涵盖个人介绍、工作回顾、业绩成果、问题分析以及未来工作计划等常见汇报模块。PPT已包含600多页,所有元素均可自由编辑,数据图表也能轻松...

三个说话框架,提升逻辑思维,让你清晰表达

#暑期创作大赛#建立清晰的逻辑思维:三个说话框架的力量我们生活在一个充满语言交流的世界中。无论是在学校,工作场所,还是在社交场合,我们都需要有效地表达我们的观点和想法。然而,许多人都有表达上的困扰,他...

《石头记》人物原型故事之逻辑框架(一)

话说空空道人将《石头记》带往人世,又经东鲁孔梅溪醒题《风月宝鉴》,曹雪芹定名《金陵十二钗》,加之警幻仙子提醒防备新谱《红楼梦十二支曲》。蛮以为他人在闲适风月故事之于能够了然背后真实故事,怎耐一万年老怪...

如何搭建高效沟通与精彩演讲的逻辑结构

对于大多数人而言,说话有逻辑这件事难于登天。很多人在演讲、工作汇报中都会遇到诸如“我不知道你在说什么”、“你的重点是什么”、“你说话毫无逻辑”此类的评价,被认为是说话缺乏逻辑的人。那么如何成为一个说话...

「书讯」论证逻辑框架下说理写作模式研究

《论证逻辑框架下说理写作模式研究》作者:金建龙出版日期:2018年11月开本:16开出版社:经济管理出版社小编推荐提升大学生批判意识和理性说理能力是新时代背景下高等教育中通识教育和博雅教育的全新探索...

【一元脑花】青少年4D逻辑训练的基本框架

一、核心训练模块多维认知构建资源分布图谱:通过分析社会资源层级与流动规律,建立立体空间认知模型2DOC时空维度整合:将历史局势演变(纵向时间轴)与未来趋势预判(横向可能性轴)结合训练2DOC动态干预系...

提升写作逻辑,这5个框架你搭建好了吗?

每个人都有写作的愿望,也都想表达心中浩荡的情感,但多年过后,许多人依旧卡在“无话可说”“写不出结构”的怪圈里。有人慨叹:“浮云一别后,流水十年间”,梦想与现实总有一道沟壑横亘——此岸是满腹心事,彼岸...

2023年主观题法治思想知识框架图

...

学霸:2天吃透初一语文上学期核心预习知识框架图|暑假弯道超车

学霸:2天吃透初一语文上学期核心预习知识框架图|暑假弯道超车。具体如下:查看作者的个人主页获悉剩余的~...

取消回复欢迎 发表评论: