/**
 * @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;
    }
}

Jensun
1 声望0 粉丝

引用和评论

0 条评论