如何通过表名获得对应的model类或者类名?

如何通过表名获得对应的model类或者类名;

比如我有个abc_sys_user 的表 对应的 model 为 SysUser.class

还有个 def_user 表 对应的 mode 为 User.class

arp 里面 没有 对应的 get(tableName) 方法来获得! 

我现在 拿到了 def_user 表名;如何代码中来获得对应的 model类是哪个?或者能得到对应的类名也可以!


评论区

Terely

2016-09-13 17:21

我目前想的办法是,自己建个map来存储表名和class名 的 key value,启动的时候初始化,放到全局变量里面!不知道是否有更好的办法?

大青山

2016-09-13 17:22

表映射的类名完全是你自定义的啊。。。直接拿过来用就好了,为什么还要画蛇添足呢。。。

Terely

2016-09-13 17:22

Terely

2016-09-13 17:23

@大青山 怎么拿过来用,比如说你再controller里面 传过来表名了,你怎么知道这个表对应的model是那个?

JFinal

2016-09-13 17:25

@Terely 通过 TableMapping.me().getTable(modelClass) 可以拿到 meta 信息,里面有 table 到 model 的对应关系,也可以通过反射拿到其中的 map,直接将这个关系再放到自己的工具类中去使用

JFinal

2016-09-13 17:28

刚看了一下源代码,TableMapping 中有一个Map modelToTableMap 属性存放的是 model 到 table 的关系,通过反射得到空上 modelToTableMap 对象,然后遍历再存放为一个 Map tableNameToModel,这样就可以随时用 tableName 得到 Model 了

Terely

2016-09-13 17:33

@JFinal 嗯! 这里是不是有必要增加个 get(tableName) 返回 model 的方法!我目前主要业务场景是在一个方法中根据表名的不同动态生成不同的model实例,好实现该方法的通用性!

JFinal

2016-09-13 17:41

@Terely 以前几乎没人提出过这个需求,所以没有加,通常来说 jfinal 只会添加较有有需求的 API,这样才能保障极简设计,否则 jfinal 经过这五年的发展早已变得很庞大了,建议先用扩展的方式用起来,如果后续确实有较强的需求,会开放的

大青山

2016-09-13 17:45

@Terely 还是头一次见到反封装的,不过你这个完全可以通过反射得到。

热门反馈

扫码入社