nutzdao mysql_nutzdao分库怎么实现?

目前可以使用MyDaoInterceptor implements DaoInterceptor实现了自定义sql的部分,但是insert(对象)不知道该怎么写,代码如下:

public class MyDaoInterceptor implements DaoInterceptor {

public void filter(DaoInterceptorChain chain) throws DaoException {

DaoStatement st = chain.getDaoStatement();

if (st instanceof NutPojo) {

NutPojo nutpojo=(NutPojo) st;

nutpojo.setBefore(new PojoCallback() {

@Override

public Object invoke(Connection conn, ResultSet rs, Pojo pojo, Statement stmt) throws SQLException {

System.out.println(pojo);

return null;

}

});

// 如果是dao.insert(user)之类的操作,会进入这个分支

} else if (st instanceof NutSql) {

// 如果是自定义SQL,会进入这个分支

Saas_tenant_app saas=SaasCache.getApp();

Saas_tenant_app_allocate_resource res=saas.getRes().get(DynamicDataSourceHolder.db_resource_code);

String dbinstance=res.getDatabase_name();

NutSql nutsql=(NutSql) st;

String sql=nutsql.getSourceSql();

//使用sql解析器改造sql

// 新建 MySQL Parser

SQLStatementParser parser = new MySqlStatementParser(sql);

// 使用Parser解析生成AST,这里SQLStatement就是AST

SQLStatement sqlStatement = parser.parseStatement();

MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();

sqlStatement.accept(visitor);

Map mapTable = visitor.getTables();

for (Map.Entry entry : mapTable.entrySet()){

sql = sql.replace(entry.getKey().getName(), dbinstance + "."+entry.getKey().getName());

}

nutsql.setSourceSql(sql);

}

chain.doChain();//继续下一个拦截器执行

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值