渣渣求教, Java 如何通过数据库中字段(动态的)创建实体类( model)

2017-07-05 00:15:15 +08:00
 xiaofdejimo

因为数据库里表的字段是动态的,每次用的时候想根据字段反过来动态的生成实体类,不是静态的可以直接写一个实体类做映射关系就行,求教大腿用反射怎么写

5090 次点击
所在节点    Java
26 条回复
xiaofdejimo
2017-07-05 00:31:45 +08:00
就是 Json Gen 这个网站的功能,具体是怎么实现的?
<a href="http://jsongen.byingtondesign.com/">jsongen</a>
Lonely
2017-07-05 00:37:35 +08:00
你是要在程序运行时根据表字段动态生成类?
zhangbohun
2017-07-05 00:38:28 +08:00
用 map 不知道行不行?
Kilerd
2017-07-05 01:34:50 +08:00
工厂模式生产出来啊
SaltedFish12138
2017-07-05 08:09:54 +08:00
我觉得用 fastjson 应该能满足你的需求。只是不知道除了属性,楼主对实体类有什么其他的要求没?
ixiaohei
2017-07-05 08:31:54 +08:00
mybatis 好像有这个功能,根据字段的值反射不同的实体。另外感觉你数据库模式设计有问题,后面会很难维护的。
peoce
2017-07-05 08:49:42 +08:00
licht114
2017-07-05 08:58:07 +08:00
eclipse 有反向生成。
paragon
2017-07-05 10:05:18 +08:00
mybatis generator 不谢~
em84
2017-07-05 10:10:50 +08:00
逆向工程?
solee
2017-07-05 10:16:38 +08:00
@paragon 那个只能算生成,也是静态的。我理解的动态是数据库改了字段,程序自己就可以生成 model。这个高大上的技术,还没听过~
zpf124
2017-07-05 10:53:02 +08:00
@solee 你这个想法非常诡异啊, 动态的运行中也会随时更新实体类? 你代码怎么写?

你之前 有个文章的表 ,写了一个字段 content, 结果因为显示界面结构变了, 数据库改成了 title,directions。
你怎么自动生成? 实体类动态生成了,页面展示不出来了怎么处理器? 难道连页面也自动生成?
smithtel
2017-07-05 10:59:13 +08:00
设计有问题,为何要语言去修正
jalena
2017-07-05 11:17:11 +08:00
我在纠结什么样的系统会频繁的修改字段?
pengfei
2017-07-05 11:20:00 +08:00
怎么感觉原先的设计是基于缓存或 ES 的,后改成数据库了 -,-
bk201
2017-07-05 11:37:55 +08:00
@xiaofdejimo Json Gen 这个不就是普通的文本语义处理?
hwding
2017-07-05 12:04:03 +08:00
是不是只能 asm.jar 了
hwding
2017-07-05 12:06:17 +08:00
The only required component to generate a class is the `ClassWriter` compo-
nent.
Librazy
2017-07-05 13:56:13 +08:00
或许你需要 javac 和一个支持动态 load/reload 的 classloader?
大概是现场编译一个加载进来反射着玩……
solee
2017-07-05 14:07:09 +08:00
@zpf124 所以啊 我觉得楼主标题很迷惑,如果只是生成 model 那工具太多啦~ 很久没接触过 java 了,还以为又进化出什么很黑科技的技术,哈哈~

楼主说的:“因为数据库里表的字段是动态的,每次用的时候想根据字段反过来动态的生成实体类”

也就是说每次生成一次 model 再 run

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/373090

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX