Commit 3f83569edc5a9c5f4e4ef5f055ab253d8c41b488
1 parent
98f9e44b
feat: 【IoT 物联网】新增简单类型处理器配置和处理器,优化 JSON 解析问题(移除,已经解决)
Showing
3 changed files
with
2 additions
and
81 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mybatis/config/SimpleTypeHandlerConfig.java deleted
| 1 | -package cn.iocoder.yudao.module.iot.framework.mybatis.config; | |
| 2 | - | |
| 3 | -import cn.iocoder.yudao.module.iot.framework.mybatis.handler.SimpleObjectTypeHandler; | |
| 4 | -import jakarta.annotation.PostConstruct; | |
| 5 | -import jakarta.annotation.Resource; | |
| 6 | -import lombok.extern.slf4j.Slf4j; | |
| 7 | -import org.apache.ibatis.session.SqlSessionFactory; | |
| 8 | -import org.apache.ibatis.type.TypeHandlerRegistry; | |
| 9 | -import org.springframework.context.annotation.Configuration; | |
| 10 | - | |
| 11 | -/** | |
| 12 | - * 简单类型处理器配置 | |
| 13 | - * 注册自定义的类型处理器,避免 JSON 解析错误 | |
| 14 | - * | |
| 15 | - * @author 芋道源码 | |
| 16 | - */ | |
| 17 | -@Slf4j | |
| 18 | -@Configuration | |
| 19 | -public class SimpleTypeHandlerConfig { | |
| 20 | - | |
| 21 | - @Resource | |
| 22 | - private SqlSessionFactory sqlSessionFactory; | |
| 23 | - | |
| 24 | - @PostConstruct | |
| 25 | - public void registerTypeHandlers() { | |
| 26 | - TypeHandlerRegistry registry = sqlSessionFactory.getConfiguration().getTypeHandlerRegistry(); | |
| 27 | - | |
| 28 | - // 注册简单的 Object 类型处理器,避免 JSON 解析问题 | |
| 29 | - registry.register(java.lang.Object.class, new SimpleObjectTypeHandler()); | |
| 30 | - | |
| 31 | - log.info("简单类型处理器注册完成,避免 JSON 解析错误"); | |
| 32 | - } | |
| 33 | -} |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mybatis/handler/SimpleObjectTypeHandler.java deleted
| 1 | -package cn.iocoder.yudao.module.iot.framework.mybatis.handler; | |
| 2 | - | |
| 3 | -import org.apache.ibatis.type.BaseTypeHandler; | |
| 4 | -import org.apache.ibatis.type.JdbcType; | |
| 5 | - | |
| 6 | -import java.sql.CallableStatement; | |
| 7 | -import java.sql.PreparedStatement; | |
| 8 | -import java.sql.ResultSet; | |
| 9 | -import java.sql.SQLException; | |
| 10 | - | |
| 11 | -/** | |
| 12 | - * 简单的 Object 类型处理器 | |
| 13 | - * 直接返回字符串,避免 JSON 解析问题 | |
| 14 | - * | |
| 15 | - * @author 芋道源码 | |
| 16 | - */ | |
| 17 | -public class SimpleObjectTypeHandler extends BaseTypeHandler<Object> { | |
| 18 | - | |
| 19 | - @Override | |
| 20 | - public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) | |
| 21 | - throws SQLException { | |
| 22 | - ps.setString(i, parameter.toString()); | |
| 23 | - } | |
| 24 | - | |
| 25 | - @Override | |
| 26 | - public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { | |
| 27 | - return rs.getString(columnName); // 直接返回字符串 | |
| 28 | - } | |
| 29 | - | |
| 30 | - @Override | |
| 31 | - public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { | |
| 32 | - return rs.getString(columnIndex); // 直接返回字符串 | |
| 33 | - } | |
| 34 | - | |
| 35 | - @Override | |
| 36 | - public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { | |
| 37 | - return cs.getString(columnIndex); // 直接返回字符串 | |
| 38 | - } | |
| 39 | -} | |
| 40 | 0 | \ No newline at end of file |
yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/device/IotDevicePropertyMapper.xml
| ... | ... | @@ -66,20 +66,13 @@ |
| 66 | 66 | DESCRIBE product_property_${productId} |
| 67 | 67 | </select> |
| 68 | 68 | |
| 69 | - <resultMap id="IotDevicePropertyRespVOMap" | |
| 70 | - type="cn.iocoder.yudao.module.iot.controller.admin.device.vo.property.IotDevicePropertyRespVO"> | |
| 71 | - <result property="value" column="value" | |
| 72 | - typeHandler="cn.iocoder.yudao.module.iot.framework.mybatis.handler.SimpleObjectTypeHandler"/> | |
| 73 | - <result property="updateTime" column="update_time" javaType="java.lang.Long"/> | |
| 74 | - </resultMap> | |
| 75 | - | |
| 76 | 69 | <select id="selectListByHistory" |
| 77 | - resultMap="IotDevicePropertyRespVOMap"> | |
| 70 | + resultType="cn.iocoder.yudao.module.iot.controller.admin.device.vo.property.IotDevicePropertyRespVO"> | |
| 78 | 71 | SELECT ${@cn.hutool.core.util.StrUtil@toUnderlineCase(reqVO.identifier)} AS `value`, ts AS update_time |
| 79 | 72 | FROM device_property_${reqVO.deviceId} |
| 80 | 73 | WHERE ${@cn.hutool.core.util.StrUtil@toUnderlineCase(reqVO.identifier)} IS NOT NULL |
| 81 | 74 | AND ts BETWEEN ${@cn.hutool.core.date.LocalDateTimeUtil@toEpochMilli(reqVO.times[0])} |
| 82 | - AND ${@cn.hutool.core.date.LocalDateTimeUtil@toEpochMilli(reqVO.times[1])} | |
| 75 | + AND ${@cn.hutool.core.date.LocalDateTimeUtil@toEpochMilli(reqVO.times[1])} | |
| 83 | 76 | ORDER BY ts DESC |
| 84 | 77 | </select> |
| 85 | 78 | ... | ... |