自定义类型转换器
添加数据时将List类型存储成以 ,
分割的varchar类型
例如:Arrays.asList(“篮球”, “足球”) → 足球,篮球
实现步骤
- 实现
org.apache.ibatis.type.TypeHandler
接口,指定入参类型 - 通过
@MappedJdbcTypes
和@MappedTypes
注解指定互相映射的数据类型 - 实现接口方法(通过
PreparedStatement
和ResultSet
进行参数类型转换)
代码实现
/**
* List2VarcharHandler
*
* @author xgSama
* @date 2021/3/7 13:38
*/
// 添加这两个注解指定互相映射的数据类型
@MappedJdbcTypes(JdbcType.VARCHAR)
@MappedTypes(List.class)
public class List2VarcharHandler implements TypeHandler<List<String>> {
// 将传入的List格式化后放入PreparedStatement中
@Override
public void setParameter(PreparedStatement preparedStatement, int i, List<String> strings, JdbcType jdbcType) throws SQLException {
StringBuilder sb = new StringBuilder();
if (strings.size() > 0) {
for (String string : strings) {
sb.append(string).append(","</