zhaoyun před 5 měsíci
rodič
revize
59887a6772

+ 54 - 0
ruoyi-common/src/main/java/com/ruoyi/common/handler/ConvertCommaSeparatedStrToListTypeHandler.java

@@ -0,0 +1,54 @@
+package com.ruoyi.common.handler;
+
+
+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;
+
+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;
+
+
+@MappedJdbcTypes(value = { JdbcType.VARCHAR })
+public class ConvertCommaSeparatedStrToListTypeHandler extends BaseTypeHandler<List<String>> {
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType)
+            throws SQLException {
+        String d = parameter.stream().map(v -> String.valueOf(v)).collect(Collectors.joining(","));
+        ps.setString(i, d);
+    }
+
+    @Override
+    public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        String values = rs.getString(columnName);
+        return getResults(values);
+    }
+
+    @Override
+    public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        String values = rs.getString(columnIndex);
+        return getResults(values);
+    }
+
+    @Override
+    public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        String values = cs.getString(columnIndex);
+        return getResults(values);
+    }
+
+    private List<String> getResults(String values) {
+        if (StringUtils.isNotBlank(values)) {
+            String[] data = values.split(",");
+            return new ArrayList<>(Arrays.asList(data));
+        }
+        return new ArrayList<>();
+    }
+}