
因为数据库里表的字段是动态的,每次用的时候想根据字段反过来动态的生成实体类,不是静态的可以直接写一个实体类做映射关系就行,求教大腿用反射怎么写
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 随便组合啊 |