diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/handler/CommaSplitTypeHandler.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/handler/CommaSplitTypeHandler.java index 150f9316..5fecc3d5 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/handler/CommaSplitTypeHandler.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/handler/CommaSplitTypeHandler.java @@ -15,8 +15,8 @@ */ package com.mybatisflex.core.handler; +import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; -import org.apache.ibatis.type.TypeHandler; import java.sql.CallableStatement; import java.sql.PreparedStatement; @@ -24,48 +24,42 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Arrays; import java.util.List; -import java.util.StringJoiner; /** * @author michael */ -public class CommaSplitTypeHandler implements TypeHandler> { +public class CommaSplitTypeHandler extends BaseTypeHandler> { @Override - public void setParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException { + public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException { if (parameter != null) { - StringJoiner stringJoiner = new StringJoiner(","); - parameter.forEach(stringJoiner::add); - ps.setString(i, stringJoiner.toString()); + ps.setString(i, String.join(",", parameter)); + } else { + ps.setNull(i, jdbcType.TYPE_CODE); } } @Override - public List getResult(ResultSet rs, String columnName) throws SQLException { - String columnValueStr = rs.getString(columnName); - if (columnValueStr != null) { - return Arrays.asList(columnValueStr.split(",")); - } - return null; + public List getNullableResult(ResultSet rs, String columnName) throws SQLException { + return splitByComma(rs.getString(columnName)); } @Override - public List getResult(ResultSet rs, int columnIndex) throws SQLException { - String columnValueStr = rs.getString(columnIndex); - if (columnValueStr != null) { - return Arrays.asList(columnValueStr.split(",")); - } - return null; + public List getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + return splitByComma(rs.getString(columnIndex)); } @Override - public List getResult(CallableStatement cs, int columnIndex) throws SQLException { - String columnValueStr = cs.getString(columnIndex); - if (columnValueStr != null) { - return Arrays.asList(columnValueStr.split(",")); + public List getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + return splitByComma(cs.getString(columnIndex)); + } + + private List splitByComma(String string) { + if (string == null || string.isEmpty()) { + return null; } - return null; + return Arrays.asList(string.split(",")); } }