一、添加依賴
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/#/
2、建立接口,具體如下所示,不用import即可使用函數或函數集
函數使用
函數集使用