在MyBatis中,當數據庫中的DECIMAL類型需要映射到Java實體類中時,通常可以使用BigDecimal來表示。以下是一些最佳實踐:
<result column="column_name" property="propertyName" jdbcType="DECIMAL" javaType="java.math.BigDecimal"/>
private BigDecimal propertyName;
<result column="column_name" property="propertyName" jdbcType="DECIMAL" javaType="java.math.BigDecimal" typeHandler="com.example.MyBigDecimalTypeHandler"/>
public class MyBigDecimalTypeHandler extends BaseTypeHandler<BigDecimal> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, BigDecimal parameter, JdbcType jdbcType) throws SQLException {
ps.setBigDecimal(i, parameter);
}
@Override
public BigDecimal getNullableResult(ResultSet rs, String columnName) throws SQLException {
return rs.getBigDecimal(columnName);
}
@Override
public BigDecimal getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return rs.getBigDecimal(columnIndex);
}
@Override
public BigDecimal getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return cs.getBigDecimal(columnIndex);
}
}
通過以上最佳實踐,可以有效地將數據庫中的DECIMAL類型轉換為Java中的BigDecimal類型,并在MyBatis中進行適當的映射。