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