瀏覽代碼

通过ClassLoader获取jar包中的sql文件

zhangchenglong 2 年之前
父節點
當前提交
ea82f394b3

+ 12 - 14
src/main/java/com/syjy/calculate/repository/repositoryImpl/CalculationFormulaRepositoryImpl.java

@@ -3,14 +3,16 @@ package com.syjy.calculate.repository.repositoryImpl;
 import com.syjy.calculate.entity.CalculationFormula;
 import com.syjy.calculate.repository.CalculationFormulaRepository;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
 import org.springframework.dao.DataAccessException;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.ResultSetExtractor;
 import org.springframework.stereotype.Service;
-import org.springframework.util.ResourceUtils;
+import org.springframework.util.ClassUtils;
 import javax.annotation.Resource;
 import java.io.*;
+import java.net.URL;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.List;
@@ -35,17 +37,15 @@ public class CalculationFormulaRepositoryImpl implements CalculationFormulaRepos
 
         try {
 
-            // 如果表存在,删除表
-            if (created) {
-                String dropSql = "DROP table t_calculation_formula";
-                jdbcTemplate.execute(dropSql);
-            }
-            // 创建表
-            String createSql = "create table t_calculation_formula ( ID int(0) not null auto_increment primary key, TYPE varchar(50) , `ORDER` int(0), FORMULA varchar(255) not null , PROVINCE_ENUM varchar(10), STATE varchar(10), CREATE_TIME datetime(0), CREATOR varchar(50), LAST_MODIFIER varchar(50), LAST_MODIFY_TIME datetime(0));";
-
-            jdbcTemplate.execute(createSql);
-            // 获取sql文件
-            File sqlFile = ResourceUtils.getFile("classpath:sql/test.sql");
+            // 获取初始化公式表sql
+            String path = "sql/test.sql";
+            ClassLoader defaultClassLoader = ClassUtils.getDefaultClassLoader();
+            assert defaultClassLoader != null;
+            URL resource = defaultClassLoader.getResource(path);
+            assert resource != null;
+            InputStream inputStream = resource.openStream();
+            File sqlFile = new File("sql/test.sql");
+            FileUtils.copyToFile(inputStream,sqlFile);
             // 读取文件
             FileReader fileReader = new FileReader(sqlFile);
             BufferedReader reader = new BufferedReader(fileReader);
@@ -76,8 +76,6 @@ public class CalculationFormulaRepositoryImpl implements CalculationFormulaRepos
         } catch (DataAccessException e) {
             e.printStackTrace();
         }
-
         return calculationFormulaList;
     }
-
 }

+ 19 - 41
src/main/resources/sql/test.sql

@@ -1,25 +1,6 @@
-/*
- Navicat Premium Data Transfer
-
- Source Server         : localhost_3306
- Source Server Type    : MySQL
- Source Server Version : 80028
- Source Host           : localhost:3306
- Source Schema         : ipfcst-v3
-
- Target Server Type    : MySQL
- Target Server Version : 80028
- File Encoding         : 65001
-
- Date: 16/08/2022 10:06:08
-*/
-
 SET NAMES utf8mb4;
 SET FOREIGN_KEY_CHECKS = 0;
 
--- ----------------------------
--- Table structure for t_calculation_formula
--- ----------------------------
 DROP TABLE IF EXISTS `t_calculation_formula`;
 CREATE TABLE `t_calculation_formula`  (
   `ID` int(0) NOT NULL AUTO_INCREMENT,
@@ -33,27 +14,24 @@ CREATE TABLE `t_calculation_formula`  (
   `LAST_MODIFIER` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
   `LAST_MODIFY_TIME` datetime(0) NULL DEFAULT NULL,
   PRIMARY KEY (`ID`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
 
--- ----------------------------
--- Records of t_calculation_formula
--- ----------------------------
-INSERT INTO t_calculation_formula VALUES (1, 'POINT_S', 1, '(1-math.abs((sj-yc)/yc))*100', 'E21Old;E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (2, 'POINT_U', 1, 'sum:math.abs(sj-yc)', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (3, 'POINT_U', 2, 'math.abs((sj/(sj+yc))-0.5)*(math.abs(sj-yc)/result1)', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (4, 'POINT_U', 3, '(1-(2*result2))*100', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (5, 'MAE', 1, 'sum:math.abs((sj-yc)', 'E14;E36;E42;E43;E51;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (6, 'MAE', 2, '(1-(result1/(rl*count)))*100', 'E14;E36;E42;E43;E51;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (7, 'MAE_R', 1, 'sum:math.abs((sj-yc)/yc)', 'E21Old', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (8, 'MAE_R', 2, '(1-(result1/count))*100', 'E21Old', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (9, 'RMSE_A', 1, 'sum:math.abs(sj-yc)', 'E12;E13;E17;E99', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (10, 'RMSE_A', 2, 'sum:math.pow((sj-yc),2)*math.abs(VariateA-VariateB)/result1', 'E12;E13;E17;E99', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (11, 'RMSE_A', 3, '(1-(math.sqrt(result2)/rl))*100', 'E12;E13;E17;E99', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (12, 'RMSE_C', 1, 'sum:math.pow((sj-yc)/rl,2)', 'E15;E21;E22;E23;E23Old;E41;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (13, 'RMSE_C', 2, '(1-math.sqrt((result1/count)))*100', 'E15;E21;E22;E23;E23Old;E41;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (14, 'RMSE_R', 1, 'sum:math.pow((sj-yc)/sj,2)', 'E32;E33;E34', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (15, 'RMSE_R', 2, '(1-math.sqrt((result1/count)))*100', 'E32;E33;E34', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (16, 'RMSE_S', 1, 'sum:math.pow((sj-yc),2)', 'E22;E23;E36;E37;E42;E43;E44;E45;E51;E62;', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO t_calculation_formula VALUES (17, 'RMSE_S', 2, '(1-(result1/rl*math.sqrt(count)))*100', 'E22;E23;E36;E37;E42;E43;E44;E45;E51;E62;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (1, 'POINT_S', 1, '(1-math.abs((sj-yc)/yc))*100', 'E21Old;E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (2, 'POINT_U', 1, 'sum:math.abs(sj-yc)', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (3, 'POINT_U', 2, 'math.abs((sj/(sj+yc))-0.5)*(math.abs(sj-yc)/result1)', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (4, 'POINT_U', 3, '(1-(2*result2))*100', 'E61;E62;E63;E64;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (5, 'MAE', 1, 'sum:math.abs((sj-yc)', 'E14;E36;E42;E43;E51;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (6, 'MAE', 2, '(1-(result1/(rl*count)))*100', 'E14;E36;E42;E43;E51;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (7, 'MAE_R', 1, 'sum:math.abs((sj-yc)/yc)', 'E21Old', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (8, 'MAE_R', 2, '(1-(result1/count))*100', 'E21Old', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (9, 'RMSE_A', 1, 'sum:math.abs(sj-yc)', 'E12;E13;E17;E99', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (10, 'RMSE_A', 2, 'sum:math.pow((sj-yc),2)*math.abs(VariateA-VariateB)/result1', 'E12;E13;E17;E99', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (11, 'RMSE_A', 3, '(1-(math.sqrt(result2)/rl))*100', 'E12;E13;E17;E99', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (12, 'RMSE_C', 1, 'sum:math.pow((sj-yc)/rl,2)', 'E15;E21;E22;E23;E23Old;E41;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (13, 'RMSE_C', 2, '(1-math.sqrt((result1/count)))*100', 'E15;E21;E22;E23;E23Old;E41;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (14, 'RMSE_R', 1, 'sum:math.pow((sj-yc)/sj,2)', 'E32;E33;E34', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (15, 'RMSE_R', 2, '(1-math.sqrt((result1/count)))*100', 'E32;E33;E34', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (16, 'RMSE_S', 1, 'sum:math.pow((sj-yc),2)', 'E22;E23;E36;E37;E42;E43;E44;E45;E51;E62;', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `t_calculation_formula` VALUES (17, 'RMSE_S', 2, '(1-(result1/rl*math.sqrt(count)))*100', 'E22;E23;E36;E37;E42;E43;E44;E45;E51;E62;', NULL, NULL, NULL, NULL, NULL);
 
-SET FOREIGN_KEY_CHECKS = 1;
+SET FOREIGN_KEY_CHECKS = 1;