转换器类
package com.tiger.handler;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.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;
public class StringAndListTypeHandler extends BaseTypeHandler<List<String>> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameterList, JdbcType jdbcType) throws SQLException {
if (CollectionUtils.isNotEmpty(parameterList)) {
String param = parameterList.stream().map(String::valueOf).collect(Collectors.joining(","));
ps.setString(i, param);
}
}
@Override
public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
String paramStr = rs.getString(columnName);
return splitAndConvert(paramStr);
}
@Override
public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String paramStr = rs.getString(columnIndex);
return splitAndConvert(paramStr);
}
@Override
public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String paramStr = cs.getString(columnIndex);
return splitAndConvert(paramStr);
}
private List<String> splitAndConvert(String paramStr) {
if (StringUtils.isBlank(paramStr)) {
return new ArrayList<>();
} else {
List<String> scopes = Arrays.asList(paramStr.split(","));
return scopes.stream().map(String::valueOf).collect(Collectors.toList());
}
}
}

- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
使用1
mybatis:
type-handlers-package: com.tiger.handler
@MappedJdbcTypes(JdbcType.VARCHAR)
@MappedTypes(List.class)
使用2
<result column="JSKC" property="teachCoursesList"
jdbcType="VARCHAR" typeHandler="com.tiger.handler.StringAndListTypeHandler" />