/**
* @Description:
* @Create: 2020/4/29
*/
@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class,Integer.class})})
public class TablePartition implements Interceptor{
@Override
public Object intercept(Invocation invocation) throws Throwable {
StatementHandler statementHandler = PluginUtils.realTarget(invocation.getTarget());
String boundSql = statementHandler.getBoundSql().getSql();
//区域表分表
if(!boundSql.contains(" cb_area ")) {
return invocation.proceed();
}
MetaObject metaObject = SystemMetaObject.forObject(statementHandler);
//将目标表名分发查询
String buildSql = boundSql.replace("cb_area","cb_area_qj");
System.out.println("分表sql:"+buildSql);
metaObject.setValue("delegate.boundSql.sql", buildSql);
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
if (target instanceof StatementHandler) {
return Plugin.wrap(target, this);
}
return target;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。