通过 catlet 支持跨分片复杂 SQL 实现以及存储过程支持等。使用方式主要通过 mycat 注释的方式来执行,如下:
/*!mycat:catlet=demo.catlets.ShareJoin / select bu.,sg.* from base_user bu,sam_glucose sg where
bu.id_=sg.user_id;
注:sam_glucose 是跨分片表;
/*!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 中相关的列和值;
/*!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.