当前使用版本3.4

3.4版本里动态表名里的ITableNameHandler过期了,换成了TableNameHandler,但是却没有MetaObject了,请问要怎么获取MetaObject的数据?

Comment From: miemieYaho

你可以把整个插件cv一下改改来用

Comment From: qmdx

你需要 MetaObject 做什么?

Comment From: eschervr-dev

@qmdx 用MetaObject来获取传过来的动态表名

Comment From: coffee-developer

我觉得MetaObject不应该去掉,我现在也是用MetaObject来获取查询参数动态修改表名,没使用threadLocal,mp的这个方案很轻,用mybatis插件就好了以前用mycat分表太重了,现在没有metaObject,只能解析sql获取参数再来动态表名,这样的话还不如sharding jdbc,但mp的这个方案真的好好又轻又快

Comment From: hutaishi

我觉得MetaObject不应该去掉,我现在也是用MetaObject来获取查询参数动态修改表名,没使用threadLocal,mp的这个方案很轻,用mybatis插件就好了以前用mycat分表太重了,现在没有metaObject,只能解析sql获取参数再来动态表名,这样的话还不如sharding jdbc,但mp的这个方案真的好好又轻又快

感觉用MetaObject获取参数好难,我用的ThreadLocal。 有什么好的方法通过MetaObject获取参数吗?不同的调用方式获取参数方法不同。

Comment From: lunxian8

我觉得MetaObject不应该去掉,我现在也是用MetaObject来获取查询参数动态修改表名,没使用threadLocal,mp的这个方案很轻,用mybatis插件就好了以前用mycat分表太重了,现在没有metaObject,只能解析sql获取参数再来动态表名,这样的话还不如sharding jdbc,但mp的这个方案真的好好又轻又快

赞同

Comment From: ahTy

现在有办法获取参数吗?我怎么有点不知所措,我该怎么获取参数中的表名呢

Comment From: ahTy

你可以把整个插件cv一下改改来用

请问如何操作呀,我没太明白

Comment From: ppx-build-code

你可以把整个插件cv一下改改来用

请问如何操作呀,我没太明白

DynamicTableNameInnerInterceptor重写下这个拦截器,把属性 tableNameHandlerMap 的value换成 beforeQuery 这个方法的形参上的 parameter

Comment From: m3yang

我觉得MetaObject不应该去掉,我现在也是用MetaObject来获取查询参数动态修改表名,没使用threadLocal,mp的这个方案很轻,用mybatis插件就好了以前用mycat分表太重了,现在没有metaObject,只能解析sql获取参数再来动态表名,这样的话还不如sharding jdbc,但mp的这个方案真的好好又轻又快

赞同!

Comment From: qmdx

ThreadLocal 参考 https://github.com/baomidou/mybatis-plus/issues/3186