feat: 【IoT 物联网】新增简单类型处理器配置和处理器,优化 JSON 解析问题(移除,已经解决)

This commit is contained in:
YunaiV
2025-10-01 15:51:52 +08:00
parent 98f9e44b24
commit 3f83569edc
3 changed files with 2 additions and 81 deletions

View File

@@ -1,33 +0,0 @@
package cn.iocoder.yudao.module.iot.framework.mybatis.config;
import cn.iocoder.yudao.module.iot.framework.mybatis.handler.SimpleObjectTypeHandler;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.TypeHandlerRegistry;
import org.springframework.context.annotation.Configuration;
/**
* 简单类型处理器配置
* 注册自定义的类型处理器,避免 JSON 解析错误
*
* @author 芋道源码
*/
@Slf4j
@Configuration
public class SimpleTypeHandlerConfig {
@Resource
private SqlSessionFactory sqlSessionFactory;
@PostConstruct
public void registerTypeHandlers() {
TypeHandlerRegistry registry = sqlSessionFactory.getConfiguration().getTypeHandlerRegistry();
// 注册简单的 Object 类型处理器,避免 JSON 解析问题
registry.register(java.lang.Object.class, new SimpleObjectTypeHandler());
log.info("简单类型处理器注册完成,避免 JSON 解析错误");
}
}

View File

@@ -1,39 +0,0 @@
package cn.iocoder.yudao.module.iot.framework.mybatis.handler;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 简单的 Object 类型处理器
* 直接返回字符串,避免 JSON 解析问题
*
* @author 芋道源码
*/
public class SimpleObjectTypeHandler extends BaseTypeHandler<Object> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType)
throws SQLException {
ps.setString(i, parameter.toString());
}
@Override
public Object getNullableResult(ResultSet rs, String columnName) throws SQLException {
return rs.getString(columnName); // 直接返回字符串
}
@Override
public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return rs.getString(columnIndex); // 直接返回字符串
}
@Override
public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return cs.getString(columnIndex); // 直接返回字符串
}
}

View File

@@ -66,20 +66,13 @@
DESCRIBE product_property_${productId}
</select>
<resultMap id="IotDevicePropertyRespVOMap"
type="cn.iocoder.yudao.module.iot.controller.admin.device.vo.property.IotDevicePropertyRespVO">
<result property="value" column="value"
typeHandler="cn.iocoder.yudao.module.iot.framework.mybatis.handler.SimpleObjectTypeHandler"/>
<result property="updateTime" column="update_time" javaType="java.lang.Long"/>
</resultMap>
<select id="selectListByHistory"
resultMap="IotDevicePropertyRespVOMap">
resultType="cn.iocoder.yudao.module.iot.controller.admin.device.vo.property.IotDevicePropertyRespVO">
SELECT ${@cn.hutool.core.util.StrUtil@toUnderlineCase(reqVO.identifier)} AS `value`, ts AS update_time
FROM device_property_${reqVO.deviceId}
WHERE ${@cn.hutool.core.util.StrUtil@toUnderlineCase(reqVO.identifier)} IS NOT NULL
AND ts BETWEEN ${@cn.hutool.core.date.LocalDateTimeUtil@toEpochMilli(reqVO.times[0])}
AND ${@cn.hutool.core.date.LocalDateTimeUtil@toEpochMilli(reqVO.times[1])}
AND ${@cn.hutool.core.date.LocalDateTimeUtil@toEpochMilli(reqVO.times[1])}
ORDER BY ts DESC
</select>