Search in sources :

Example 1 with HintManager

use of org.apache.shardingsphere.api.hint.HintManager in project chao-cloud by chaojunzi.

the class HintShardingColumnProxy method hintShardingCodeProxy.

/**
 * 慎用:此方法会给ThreadLocal 存放变量<br>
 * 注:请不要嵌套使用
 *
 * @param <T>
 * @param shardingCode
 * @param function
 * @return
 */
public static <T> T hintShardingCodeProxy(String shardingCode, Function<String, T> function) {
    ShardingProperties prop = SpringUtil.getBean(ShardingProperties.class);
    if (!prop.isEnable()) {
        return function.apply(shardingCode);
    }
    // 设置shardingCode
    if (StrUtil.isNotBlank(shardingCode)) {
        HintManager instance = HintManager.getInstance();
        instance.setDatabaseShardingValue(shardingCode);
    }
    try {
        return function.apply(shardingCode);
    } finally {
        HintManager.clear();
    }
}
Also used : HintManager(org.apache.shardingsphere.api.hint.HintManager) ShardingProperties(com.chao.cloud.common.extra.sharding.annotation.ShardingProperties)

Example 2 with HintManager

use of org.apache.shardingsphere.api.hint.HintManager in project note by kebukeYi.

the class ShardingJdbcApplicationTests method queryCourseByHint.

@Test
public void queryCourseByHint() {
    // 02 配置文件  强制路由策略打开
    HintManager hintManager = HintManager.getInstance();
    // 直接 定死 分表路由
    hintManager.addTableShardingValue("course", 2);
    // 直接 定死 分库路由
    // hintManager.addDatabaseShardingValue("coursedb",2);
    // Logic SQL: SELECT  cid,cname,user_id,cstatus  FROM course
    // Actual SQL: m1 ::: SELECT  cid,cname,user_id,cstatus  FROM course_2
    // Actual SQL: m2 ::: SELECT  cid,cname,user_id,cstatus  FROM course_2
    List<Course> courses = courseMapper.selectList(null);
    courses.forEach(course -> System.out.println(course));
    hintManager.close();
}
Also used : HintManager(org.apache.shardingsphere.api.hint.HintManager) Course(com.sharding.jdbc.entity.Course) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 3 with HintManager

use of org.apache.shardingsphere.api.hint.HintManager in project springboot-templet-start by thedestiny.

the class AppHintShardingAlgorithm method doSharding.

@Override
public Collection<String> doSharding(Collection<String> availableTargetNames, HintShardingValue<Long> shardingValue) {
    // Hint分片策略必须要使用 HintManager工具类
    HintManager hintManager = HintManager.getInstance();
    // 
    hintManager.addDatabaseShardingValue("t_order", 0);
    hintManager.addTableShardingValue("t_order", 1);
    return null;
}
Also used : HintManager(org.apache.shardingsphere.api.hint.HintManager)

Example 4 with HintManager

use of org.apache.shardingsphere.api.hint.HintManager in project code by lastwhispers.

the class ShardingJDBCTest method queryCourseByHint.

@Test
public void queryCourseByHint() {
    HintManager hintManager = HintManager.getInstance();
    hintManager.addTableShardingValue("course", 2);
    List<Course> courses = courseMapper.selectList(null);
    courses.forEach(course -> System.out.println(course));
    hintManager.close();
}
Also used : HintManager(org.apache.shardingsphere.api.hint.HintManager) Course(com.roy.shardingDemo.entity.Course) Test(org.junit.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Aggregations

HintManager (org.apache.shardingsphere.api.hint.HintManager)4 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)2 ShardingProperties (com.chao.cloud.common.extra.sharding.annotation.ShardingProperties)1 Course (com.roy.shardingDemo.entity.Course)1 Course (com.sharding.jdbc.entity.Course)1 Test (org.junit.Test)1 Test (org.junit.jupiter.api.Test)1