通过 catlet 支持跨分片复杂 SQL 实现以及存储过程支持等。使用方式主要通过 mycat 注释的方式来执行,如下 :
1> 跨分片联合查询注解支持
/*!mycat: catlet=demo.catlets.ShareJoin */ select bu.,sg.* from base_user bu,sam_glucose sg where bu.id_=sg.user_id;
注 : sam_glucose 是跨分片表
2> 存储过程注解支持 :
/*!mycat: sql=select * from base_user where id_=1;*/ CALL proc_test();
注 : 目前执行存储过程通过 mycat 注解的方式执行,注意需要把存储过程中的 SQL 写到注解中
3> 批量插入与 ID 自增长结合的支持
/*!mycat: catlet=demo.catlets.BatchInsertSequence */ INSERT into sam_test(name_) values('t1'),('t2');
注 : 此方式不需要在 SQL 语句中显示的设置主键字段,程序在后台根据 primaryKey 配置的主键列,自动生成主键的 sequence 值并替换原 sql 中相关的列和值
4> 获取批量 sequence 值的支持
/*!mycat: catlet=demo.catlets.BatchGetSequence */ SELECT mycat_get_seq('MYCAT_TEST',100);
注 : 此方法表示获取 MYCAT_TEST 表的 100 个 sequence 值,例如当前 MYCAT_TEST 表的最大 sequence 值为 5000,则通过此方式返回的是 5001,同时更新数据库中的 MYCAT_TEST 表的最大 sequence 值为 5100