# init-sdk **Repository Path**: yangliu817/init-sdk ## Basic Information - **Project Name**: init-sdk - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-16 - **Last Updated**: 2021-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # init-sdk 说明: 为了适配多种数据库的初始化数据, 采用sql脚本形式可能 sql脚本中含有某些数据库的关键字信息, 或者带有特殊数据库函数,在新的数据库环境下不适配,那么开发人员就必须为不同的数据库维护不同的初始化数据脚本. 为了解决这一问题,采用excel的形式保存初始化数据,使用alibaba的easyexcel读取excel, 将数据初始化到数据库中 # 使用 ## 1 配置项 ```properties #excel文件位置 如果是file:/init.xlsx 代表为磁盘路径,否则为classpath路径 spring.init.locations[0].file-path=init.xlsx #扫描数据模型存在的包 spring.init.locations[0].scan-package=cn.yangliu.model #开启事务(默认true) spring.init.transactional=false #初始化过程中某一任务失败了是否继续执行(默认true) spring.init.continue-on-fail=false #是否以异步方式初始化(默认false) spring.init.async=true #是否在执行完后删除该excel文件(默认不删除),只有文件为磁盘文件的时候才有效 spring.init.delete-file-after-success=true #是否启用初始化功能(默认true) spring.init.enable=true ``` ## 2 编码 ### 2.1 编写数据模型类 ```java /** * 下面的注解代表读取excel中sheet为APS_SYS_AUTHORITY的表格, 数据由AuthorityRepository来处理 */ @InitJob(sheet = "APS_SYS_AUTHORITY", handler = AuthorityInitHandler.class) public class AuthorityRow { @ExcelProperty("NAME") private String name; @ExcelProperty("ID") private String id; @ExcelProperty("PARENT_ID") private String parentId; @ExcelProperty("PERMISSION_NAME") private String permissionName; @ExcelProperty("SORT_NO") private Integer sortNo; @ExcelProperty(value = "BUTTON", converter = BooleanConverter.class) private Boolean button; ... setter getter ... } ``` ### 2.2 编写数据处理类 ```java /** * 实现 InitHandler 接口, 重写如下两个方法 */ @Repository public class AuthorityInitHandler implements InitHandler { /** * 保存数据 dataList的元素 由createBean方法创建 */ @Override public void persistAll(List dataList) { System.out.println("AuthorityRepository ... " + dataList.size()); } /** * 创建数据对象, 参数为excel数据模型对象返回值可能是数据库持久化对象,由开发者决定 */ @Override public AuthorityEntity createBean(Object row) { return new AuthorityEntity(); } } ```