当前使用版本(必填,否则不予处理)
3.4.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
mybaits-plus 在使用clickhouse时,查询结果存在2个问题: 1. 实体对象不支持类型: LocalDate和LocalDateTime; 2. 多表关系查询时,由于clickhouse-jdbc返回字段是t1.xx1, t1.xx2, t2.xxx1,t2.xxx2 这种带有表别名的字段,导致和实体对象映射不上,mybatis-plus能否支持一下这个功能? 现在的做法是 每个字段都使用 AS 关键字,把表别名去除!很繁琐!
重现步骤(如果有就写完整)
报错信息
Comment From: spirit-unpredictable
当前使用版本(必填,否则不予处理)
3.4.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
mybaits-plus 在使用clickhouse时,查询结果存在2个问题:
- 实体对象不支持类型: LocalDate和LocalDateTime;
- 多表关系查询时,由于clickhouse-jdbc返回字段是t1.xx1, t1.xx2, t2.xxx1,t2.xxx2 这种带有表别名的字段,导致和实体对象映射不上,mybatis-plus能否支持一下这个功能? 现在的做法是 每个字段都使用 AS 关键字,把表别名去除!很繁琐!
重现步骤(如果有就写完整)
报错信息
第一个问题,确定不是数据源框架的问题吗,我用低版本druid出现过
Comment From: miemieYaho
数据封装去找mybatis
Comment From: gao1399677
最新版这个不支持并非mybatis与 mybatis-plus的锅, 问题应该是在clickhouse-jdbc上作者说v0.3.0会修复 可以看下这个issue
Comment From: linwaiwai
how to solve the first problem ?
Use custom TypeHandler .
@Bean
public MybatisPlusPropertiesCustomizer mybatisPlusPropertiesCustomizer() {
return properties -> {
DynamicMybatisConfiguration configuration = new DynamicMybatisConfiguration();
configuration.getTypeHandlerRegistry().register(ClickHouseLocalDateTimeTypeHandler.class);
properties.setConfiguration(configuration);
};
}
@MappedTypes(LocalDateTime.class)
public class ClickHouseLocalDateTimeTypeHandler extends BaseTypeHandler<LocalDateTime> {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Override
public void setNonNullParameter(PreparedStatement ps, int i, LocalDateTime parameter, JdbcType jdbcType) throws SQLException {
if (SqlUtils.isClickHouse()){
ps.setString(i, parameter.format(FORMATTER));
} else {
ps.setTimestamp(i, Timestamp.valueOf(parameter));
}
}
@Override
public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException {
Timestamp timestamp = rs.getTimestamp(columnName);
return getLocalDateTime(timestamp);
}
@Override
public LocalDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
Timestamp timestamp = rs.getTimestamp(columnIndex);
return getLocalDateTime(timestamp);
}
@Override
public LocalDateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
Timestamp timestamp = cs.getTimestamp(columnIndex);
return getLocalDateTime(timestamp);
}
private static LocalDateTime getLocalDateTime(Timestamp timestamp) {
return timestamp != null ? timestamp.toLocalDateTime() : null;
}
}
Comment From: github24518
这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。