Tushare Pro Java SDK

环境需求

  • Java 8

快速上手

<dependency>
  <groupId>com.github.qhh6eq</groupId>
  <artifactId>tushare-pro-java-sdk</artifactId>
  <version>2.0.0-RELEASE</version>
</dependency>
TusharePro.setGlobal(new TusharePro.Builder()
        .setToken("**********")  // 你的token
        .build());  // 设置全局配置
                
// 打印 上海交易所所有上市的沪股通股票 信息
TushareProService.stockBasic(new Request<StockBasicEntity>() {}  // 使用全局配置
        .allFields()  // 所有字段
        .param(StockBasic.Params.exchange.value("SSE"))  // 参数
        .param(StockBasic.Params.list_status.value("L"))  // 参数
        .param("is_hs", "H"))  // 参数
        .forEach(System.out::println);

与1.0.x的区别

  • 加入JPA注解, 无脑CRUD
  • Request分离 & 更改映射方式, 方便扩展

持久化

@Autowired private StockBasicRepository stockBasicRepository;
for (final String value : new String[]{"L", "D", "P"}) {
    stockBasicRepository.saveAll(TushareProService.stockBasic(new Request<StockBasicEntity>() {}
            .allFields()
            .param(StockBasic.Params.list_status.value(value))));
}

自定义映射

  • 映射类(如自带的Entity类)也可以自行实现, 只要implements对应的接口(可在祖先里; 不能出现多个BaseBean), 并且把Fields内部类下的字段全部在实现类中以小驼峰式声明(未来可能会支持自定义映射, 但不建议这么折腾)
public class MyStockBasic implements StockBasic {
    protected String tsCode;  // TS代码 对应 StockBasic.Fields.ts_code
    // ...
}
final List<MyStockBasic> list = TushareProService.stockBasic(new Request<MyStockBasic>() {})

完整例子

final TusharePro.Builder builder = new TusharePro.Builder()
        .setToken("**********");  // 你的token

TusharePro.setGlobal(builder.build());  // 设置全局配置

final KeyValue<String, String> list_status = StockBasic.Params.list_status.value("L");

// 打印 上海交易所所有上市的沪股通股票 信息
TushareProService.stockBasic(new Request<StockBasicEntity>() {}  // 使用全局配置
        .allFields()  // 所有字段
        .param(StockBasic.Params.exchange.value("SSE"))  // 参数
        .param(list_status)  // 参数
        .param("is_hs", "H"))  // 参数
        .forEach(System.out::println);

// 一个完整的例子
TushareProService.stockBasic(
        new Request<StockBasicEntity>(builder.copy()  // 将配置拷贝
                .setMaxRetries(5)  // 设置重试次数, 默认为0
                .setRetrySleepTimeUnit(TimeUnit.SECONDS)  // 设置重试sleep单位, 默认毫秒
                .setRetrySleepTimeOut(60L)  // 设置重试sleep时间, 默认为0
                .setRequestExecutor(Executors.newSingleThreadExecutor((r -> {
                    Thread thread = new Thread(r);
                    thread.setDaemon(true);
                    return thread;
                })))  // 设置请求线程池, 默认CachedThreadPool
                .build()){}
        .allFields()
        .param(StockBasic.Params.exchange.value("SZSE"))
        .param(list_status))
        .stream()
        .filter(x -> "银行".equals(x.getIndustry()))
        .forEach(System.out::println);