因为数据库里表的字段是动态的,每次用的时候想根据字段反过来动态的生成实体类,不是静态的可以直接写一个实体类做映射关系就行,求教大腿用反射怎么写
1
xiaofdejimo OP 就是 Json Gen 这个网站的功能,具体是怎么实现的?
<a href="http://jsongen.byingtondesign.com/">jsongen</a> |
2
Lonely 2017-07-05 00:37:35 +08:00
你是要在程序运行时根据表字段动态生成类?
|
3
zhangbohun 2017-07-05 00:38:28 +08:00 via Android
用 map 不知道行不行?
|
4
Kilerd 2017-07-05 01:34:50 +08:00 via iPhone
工厂模式生产出来啊
|
5
SaltedFish12138 2017-07-05 08:09:54 +08:00 via Android
我觉得用 fastjson 应该能满足你的需求。只是不知道除了属性,楼主对实体类有什么其他的要求没?
|
6
ixiaohei 2017-07-05 08:31:54 +08:00
mybatis 好像有这个功能,根据字段的值反射不同的实体。另外感觉你数据库模式设计有问题,后面会很难维护的。
|
7
peoce 2017-07-05 08:49:42 +08:00
使用 javapoet
https://github.com/square/javapoet |
8
licht114 2017-07-05 08:58:07 +08:00
eclipse 有反向生成。
|
9
paragon 2017-07-05 10:05:18 +08:00
mybatis generator 不谢~
|
10
em84 2017-07-05 10:10:50 +08:00
逆向工程?
|
11
solee 2017-07-05 10:16:38 +08:00
@paragon 那个只能算生成,也是静态的。我理解的动态是数据库改了字段,程序自己就可以生成 model。这个高大上的技术,还没听过~
|
12
zpf124 2017-07-05 10:53:02 +08:00
@solee 你这个想法非常诡异啊, 动态的运行中也会随时更新实体类? 你代码怎么写?
你之前 有个文章的表 ,写了一个字段 content, 结果因为显示界面结构变了, 数据库改成了 title,directions。 你怎么自动生成? 实体类动态生成了,页面展示不出来了怎么处理器? 难道连页面也自动生成? |
13
smithtel 2017-07-05 10:59:13 +08:00 via Android
设计有问题,为何要语言去修正
|
14
jalena 2017-07-05 11:17:11 +08:00
我在纠结什么样的系统会频繁的修改字段?
|
15
pengfei 2017-07-05 11:20:00 +08:00
怎么感觉原先的设计是基于缓存或 ES 的,后改成数据库了 -,-
|
16
bk201 2017-07-05 11:37:55 +08:00
@xiaofdejimo Json Gen 这个不就是普通的文本语义处理?
|
17
hwding 2017-07-05 12:04:03 +08:00
是不是只能 asm.jar 了
|
18
hwding 2017-07-05 12:06:17 +08:00
The only required component to generate a class is the `ClassWriter` compo-
nent. |
19
Librazy 2017-07-05 13:56:13 +08:00
或许你需要 javac 和一个支持动态 load/reload 的 classloader?
大概是现场编译一个加载进来反射着玩…… |
20
solee 2017-07-05 14:07:09 +08:00
@zpf124 所以啊 我觉得楼主标题很迷惑,如果只是生成 model 那工具太多啦~ 很久没接触过 java 了,还以为又进化出什么很黑科技的技术,哈哈~
楼主说的:“因为数据库里表的字段是动态的,每次用的时候想根据字段反过来动态的生成实体类” 也就是说每次生成一次 model 再 run |
21
ihuotui 2017-07-05 21:28:48 +08:00 via iPhone
用 eav 设计或者 json ?既然动态数据就动态保存啊
|
22
xiaofdejimo OP |
23
xiaofdejimo OP @ixiaohei
本身因为表都不是自动维护,是数据分析的人做完分析再改动,所以后端就得做成动态的,我也很惆怅啊 |
24
zpf124 2017-07-07 11:26:44 +08:00
@xiaofdejimo 神经病需求啊.... 那前端筛选项怎么自动渲染,怎么获取实体类的属性名? 反射?
既然要动态,那要屁的实体类,直接 map 得了, 渲染的时候 直接遍历 map,有一个 key 显示一个筛选框。 |
25
solee 2017-07-07 17:45:51 +08:00
@xiaofdejimo 感觉 mongodb 就是针对这种需求啊~ 你也不用在乎字段 json 随便组合啊
|