天天看点

DataWay和Springboot集成开发

一、添加依赖

1、dataway相关依赖

<dependency>
  <groupId>net.hasor</groupId>
  <artifactId>hasor-spring</artifactId>
  <version>4.2.1</version>
</dependency>
<dependency>
  <groupId>net.hasor</groupId>
  <artifactId>hasor-dataway</artifactId>
  <version>4.2.1</version>
</dependency>
           

2、其他依赖

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.11</version>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid-spring-boot-starter</artifactId>
  <version>1.1.10</version>
</dependency>
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
</dependency>
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>2.1.2</version>
</dependency>
           

3、修改配置文件并导入初始化SQL脚本

具体可以去dataway网站下载4.x版本的SQL脚本: mysql数据库脚本下载

二、创建springboot基础项目并在Application启动类上添加注解

@EnableHasor
@EnableHasorWeb
@SpringBootApplication
@MapperScan("com.shuzhi.dataway.dao")
public class DatawayDemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(DatawayDemoApplication.class, args);
  }
}
           

三、添加udf函数到module,交给spring容器管理

@DimModule
@Component
public class DatawayModule implements SpringModule {
  @Autowired private DataSource dataSource = null;

  @Override
  public void loadModule(ApiBinder apiBinder) throws Throwable {

    // .DataSource form Spring boot into Hasor
    apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));

    // .custom DataQL
    // 注意这样通过注册udf之后,就不用再使用时进行import了……重点关注
    QueryApiBinder queryBinder = apiBinder.tryCast(QueryApiBinder.class);
    queryBinder.loadUdf(
        apiBinder.findClass(DimUdf.class), aClass -> true, springTypeSupplier(apiBinder));
    queryBinder.loadUdfSource(
        apiBinder.findClass(DimUdfSource.class), aClass -> true, springTypeSupplier(apiBinder));
  }
}
           

四、创建自定义函数(udf)

1、单个方法的udf

实现Udf 接口,然后在call方法内部编写具体的方法体,并使用@DimUdf注解对类进行标识声明即可。如果需要交给spring进行管理,添加@Component注解即可。如下所示:

/**
 * @version 1.0
 * @description
 * @since 2020/10/21
 */
@Component
@DimUdf("userUdf")
public class UserUdf implements Udf {

  @Resource private UserServiceImpl userService;

  @Override
  public Object call(Hints hints, Object... objects) throws Throwable {
    return userService.userList();
  }
}
           

2、udf工具类

实现UdfSourceAssembly接口,并编写public修饰的方法,然后@DimUdfSource注解对类进行标识,同理,也可以加@Component进行修饰,通过spring进行管理。具体如下:

/**
 * @version 1.0
 * @description
 * @since 2020/10/21
 */
@Component
@DimUdfSource("userUtil")
public class UserUtil implements UdfSourceAssembly {
  @Resource private UserServiceImpl userService;

  public String getName() {
    return userService.getName();
  }

  public List<User> getUsers() {
    return userService.userList();
  }
}

           

五、使用自定义函数

1、启动项目,访问控制界面,如下所示:

浏览器打开:http://localhost:8080/interface-ui/#/

DataWay和Springboot集成开发

2、新建接口,具体如下所示,不用import即可使用函数或函数集

函数使用

DataWay和Springboot集成开发

函数集使用

DataWay和Springboot集成开发