|
@@ -0,0 +1,52 @@
|
|
|
+package com.backendsys.config.Mybatis.handler;
|
|
|
+
|
|
|
+import org.apache.ibatis.type.BaseTypeHandler;
|
|
|
+import org.apache.ibatis.type.JdbcType;
|
|
|
+
|
|
|
+import java.sql.CallableStatement;
|
|
|
+import java.sql.PreparedStatement;
|
|
|
+import java.sql.ResultSet;
|
|
|
+import java.sql.SQLException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+public class StringToListTypeHandler extends BaseTypeHandler<List<Long>> {
|
|
|
+ @Override
|
|
|
+ public void setNonNullParameter(PreparedStatement ps, int i, List<Long> parameter, JdbcType jdbcType) throws SQLException {
|
|
|
+ throw new UnsupportedOperationException("Not implemented yet.");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Long> getNullableResult(ResultSet rs, String columnName) throws SQLException {
|
|
|
+ String roleIds = rs.getString(columnName);
|
|
|
+ return parseRoleIds(roleIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Long> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
|
|
+ String roleIds = rs.getString(columnIndex);
|
|
|
+ return parseRoleIds(roleIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Long> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
|
|
|
+ String roleIds = cs.getString(columnIndex);
|
|
|
+ return parseRoleIds(roleIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Long> parseRoleIds(String roleIds) {
|
|
|
+ if (roleIds == null || roleIds.isEmpty()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ String[] parts = roleIds.split(",");
|
|
|
+ List<Long> result = new ArrayList<>();
|
|
|
+ for (String part : parts) {
|
|
|
+ try {
|
|
|
+ result.add(Long.parseLong(part.trim()));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ // Ignore invalid numbers
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+}
|