当前使用版本(必填,否则不予处理)
3.2.0
该问题是如何引起的?(确定最新版也有问题再提!!!)
如何动态传入表名后缀参数,从而实现执行时切换表名
重现步骤(如果有就写完整)
@Bean
public PaginationInterceptor paginationInterceptor(){
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();
dynamicTableNameParser.setTableNameHandlerMap(new HashMap<String, ITableNameHandler>(2){{
//涉及表集合
List<String> tables = tableNames.getTableNames();
//动态表规则 初始表名+_+code
tables.forEach(tableTitle -> put(tableTitle,(metaObject, sql, tableName) -> tableName + "_" + String.valueOf(getParamValue("suffix",metaObject))));
}});
paginationInterceptor.setSqlParserList(Collections.singletonList(dynamicTableNameParser));
return paginationInterceptor;
}
private Object getParamValue(String title, MetaObject metaObject){
Object originalObject = metaObject.getOriginalObject();
JSONObject originalObjectJSON = JSON.parseObject(JSON.toJSONString(originalObject));
JSONObject boundSql = originalObjectJSON.getJSONObject("boundSql");
JSONObject parameterObject = boundSql.getJSONObject("parameterObject");
//这里的参数如何动态设置
parameterObject.put("suffix","yyy");
System.out.println(originalObjectJSON);
return parameterObject.get(title);
}
比如我在service里执行selectById, 此刻才知道表名的后缀是_alibaba , 那怎么传进去呢
报错信息
Comment From: chaixuhong
已解决
Comment From: fangqj
请问你是如何解决的