zhaoyun 5 ماه پیش
والد
کامیت
6018fa3713

+ 46 - 0
ruoyi-common/src/main/java/com/ruoyi/common/handler/BaseTypeHandler.java

@@ -0,0 +1,46 @@
+package com.ruoyi.common.handler;
+
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.TypeHandler;
+import org.apache.ibatis.type.TypeReference;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public abstract class BaseTypeHandler<T> extends TypeReference<T> implements TypeHandler<T> {
+
+    @Override
+    public void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
+        if (parameter == null) {
+            ps.setNull(i, jdbcType.TYPE_CODE);
+        } else {
+            setNonNullParameter(ps, i, parameter, jdbcType);
+        }
+    }
+
+    @Override
+    public T getResult(ResultSet rs, String columnName) throws SQLException {
+        return getNullableResult(rs, columnName);
+    }
+
+    @Override
+    public T getResult(ResultSet rs, int columnIndex) throws SQLException {
+        return getNullableResult(rs, columnIndex);
+    }
+
+    @Override
+    public T getResult(CallableStatement cs, int columnIndex) throws SQLException {
+        return getNullableResult(cs, columnIndex);
+    }
+
+    public abstract void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException;
+
+    public abstract T getNullableResult(ResultSet rs, String columnName) throws SQLException;
+
+    public abstract T getNullableResult(ResultSet rs, int columnIndex) throws SQLException;
+
+    public abstract T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException;
+
+}

+ 55 - 0
ruoyi-common/src/main/java/com/ruoyi/common/handler/ListTypeHandler.java

@@ -0,0 +1,55 @@
+package com.ruoyi.common.handler;
+
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+
+@MappedJdbcTypes(value = { JdbcType.VARCHAR })
+
+public class ListTypeHandler extends BaseTypeHandler<List<Double>> {
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, List<Double> parameter, JdbcType jdbcType)
+            throws SQLException {
+        String d = parameter.stream().map(v -> String.valueOf(v)).collect(Collectors.joining(","));
+        ps.setString(i, d);
+    }
+
+    @Override
+    public List<Double> getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        String values = rs.getString(columnName);
+        return getResults(values);
+    }
+
+    @Override
+    public List<Double> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        String values = rs.getString(columnIndex);
+        return getResults(values);
+    }
+
+    @Override
+    public List<Double> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        String values = cs.getString(columnIndex);
+        return getResults(values);
+    }
+
+    private List<Double> getResults(String values) {
+        if (StringUtils.isNotBlank(values)) {
+            String[] data = values.split(",");
+            return Arrays.stream(data).mapToDouble(v -> Double.parseDouble(v)).boxed().collect(Collectors.toList());
+        }
+        return new ArrayList<>();
+    }
+}