Commit a6d9da31e8d75947ebbc0f2149e24e971d1be086
1 parent
100bdf82
fix:【framework 框架】JacksonTypeHandler 导致 String 处理问题
Showing
3 changed files
with
7 additions
and
5 deletions
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/config/YudaoMybatisAutoConfiguration.java
| @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | ||
| 6 | import cn.iocoder.yudao.framework.mybatis.core.handler.DefaultDBFieldHandler; | 6 | import cn.iocoder.yudao.framework.mybatis.core.handler.DefaultDBFieldHandler; |
| 7 | import com.baomidou.mybatisplus.annotation.DbType; | 7 | import com.baomidou.mybatisplus.annotation.DbType; |
| 8 | import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; | 8 | import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; |
| 9 | +import com.baomidou.mybatisplus.core.handlers.IJsonTypeHandler; | ||
| 9 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; | 10 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; |
| 10 | import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator; | 11 | import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator; |
| 11 | import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; | 12 | import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; |
| @@ -80,8 +81,8 @@ public class YudaoMybatisAutoConfiguration { | @@ -80,8 +81,8 @@ public class YudaoMybatisAutoConfiguration { | ||
| 80 | throw new IllegalArgumentException(StrUtil.format("DbType{} 找不到合适的 IKeyGenerator 实现类", dbType)); | 81 | throw new IllegalArgumentException(StrUtil.format("DbType{} 找不到合适的 IKeyGenerator 实现类", dbType)); |
| 81 | } | 82 | } |
| 82 | 83 | ||
| 83 | - @Bean | ||
| 84 | - public JacksonTypeHandler jacksonTypeHandler(List<ObjectMapper> objectMappers) { | 84 | + @Bean // 特殊:返回结果使用 Object 而不用 JacksonTypeHandler 的原因,避免因为 JacksonTypeHandler 被 mybatis 全局使用! |
| 85 | + public Object jacksonTypeHandler(List<ObjectMapper> objectMappers) { | ||
| 85 | // 特殊:设置 JacksonTypeHandler 的 ObjectMapper! | 86 | // 特殊:设置 JacksonTypeHandler 的 ObjectMapper! |
| 86 | ObjectMapper objectMapper = CollUtil.getFirst(objectMappers); | 87 | ObjectMapper objectMapper = CollUtil.getFirst(objectMappers); |
| 87 | if (objectMapper == null) { | 88 | if (objectMapper == null) { |
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java
| @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableLogic; | @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableLogic; | ||
| 6 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | 6 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
| 7 | import com.fhs.core.trans.vo.TransPojo; | 7 | import com.fhs.core.trans.vo.TransPojo; |
| 8 | import lombok.Data; | 8 | import lombok.Data; |
| 9 | +import org.apache.ibatis.type.JdbcType; | ||
| 9 | 10 | ||
| 10 | import java.io.Serializable; | 11 | import java.io.Serializable; |
| 11 | import java.time.LocalDateTime; | 12 | import java.time.LocalDateTime; |
| @@ -37,14 +38,14 @@ public abstract class BaseDO implements Serializable, TransPojo { | @@ -37,14 +38,14 @@ public abstract class BaseDO implements Serializable, TransPojo { | ||
| 37 | * | 38 | * |
| 38 | * 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。 | 39 | * 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。 |
| 39 | */ | 40 | */ |
| 40 | - @TableField(fill = FieldFill.INSERT) | 41 | + @TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR) |
| 41 | private String creator; | 42 | private String creator; |
| 42 | /** | 43 | /** |
| 43 | * 更新者,目前使用 SysUser 的 id 编号 | 44 | * 更新者,目前使用 SysUser 的 id 编号 |
| 44 | * | 45 | * |
| 45 | * 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。 | 46 | * 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。 |
| 46 | */ | 47 | */ |
| 47 | - @TableField(fill = FieldFill.INSERT_UPDATE) | 48 | + @TableField(fill = FieldFill.INSERT_UPDATE, jdbcType = JdbcType.VARCHAR) |
| 48 | private String updater; | 49 | private String updater; |
| 49 | /** | 50 | /** |
| 50 | * 是否删除 | 51 | * 是否删除 |
yudao-module-pay/src/test/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceTest.java
| @@ -610,7 +610,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest { | @@ -610,7 +610,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest { | ||
| 610 | orderExtensionMapper.insert(orderExtension); | 610 | orderExtensionMapper.insert(orderExtension); |
| 611 | // 重要:需要将 order 的 extensionId 更新下 | 611 | // 重要:需要将 order 的 extensionId 更新下 |
| 612 | order.setExtensionId(orderExtension.getId()); | 612 | order.setExtensionId(orderExtension.getId()); |
| 613 | - orderMapper.updateById(new PayOrderDO().setId(order.getId()).setExtensionId(orderExtension.getId())); | 613 | + orderMapper.updateById(order); |
| 614 | // 准备参数 | 614 | // 准备参数 |
| 615 | PayChannelDO channel = randomPojo(PayChannelDO.class, o -> o.setId(10L)); | 615 | PayChannelDO channel = randomPojo(PayChannelDO.class, o -> o.setId(10L)); |
| 616 | PayOrderRespDTO notify = randomPojo(PayOrderRespDTO.class, | 616 | PayOrderRespDTO notify = randomPojo(PayOrderRespDTO.class, |