天天看點

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內建開發