达梦char类型未去右空格的mybatis处理方法
钢翼
编程
由于达梦数据库查询出来的char类型是包含右空格的,所有我们需要对查询结果自己去右空格。
这里我们可以用mybatis类型处理器统一处理。如果是jdbctemplate查询,需另行处理。
添加以下类,只要保证包扫描会扫到即可。
唯一不好的地方是无法区分数据源是哪种数据库,实际上mysql并不需要去右空格。
@MappedJdbcTypes({JdbcType.CHAR})
@MappedTypes({String.class})
@Component
public class StringTypeHandler implements TypeHandler<String> {
@Override
public void setParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
preparedStatement.setString(i,s);
}
@Override
public String getResult(ResultSet resultSet, String s) throws SQLException {
return trimRight(resultSet.getString(s));
}
@Override
public String getResult(ResultSet resultSet, int i) throws SQLException {
return trimRight(resultSet.getString(i));
}
@Override
public String getResult(CallableStatement callableStatement, int i) throws SQLException {
return trimRight(callableStatement.getString(i));
}
private String trimRight(String str){
if (str == null || str.equals("")) {
return str;
} else {
return str.replaceAll("[ ]+$", "");
}
}
}