Commit a6d9da31e8d75947ebbc0f2149e24e971d1be086

Authored by YunaiV
1 parent 100bdf82

fix:【framework 框架】JacksonTypeHandler 导致 String 处理问题

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,