一、添加依赖
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即可使用函数或函数集
函数使用
函数集使用