rs.getInt() 返回int类型,默认值为0,而不是数据库中是null,自动转化成0.
解决方式如下,添加抽象基础处理:
import org.apache.ibatis.type.BaseTypeHandler;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public abstract class BasicBaseTypeHandler<T> extends BaseTypeHandler<T> {
public abstract T getBasicNullableResult(ResultSet rs, String columnName) throws SQLException;
public abstract T getBasicNullableResult(ResultSet rs, int columnIndex) throws SQLException;
public abstract T getBasicNullableResult(CallableStatement cs, int columnIndex) throws SQLException;
@Override
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
if (rs.getString(columnName) == null) {
return null;
}
return getBasicNullableResult(rs, columnName);
}
@Override
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
if (rs.getString(columnIndex) == null) {
return null;
}
return getBasicNullableResult(rs, columnIndex);
}
@Override
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
if (cs.getString(columnIndex) == null) {
return null;
}
return getBasicNullableResult(cs, columnIndex);
}
}