From 59680bbc890e687a4f4e9085a7b68dcdd080acaf Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Mon, 5 Feb 2024 17:11:11 +0800 Subject: [PATCH] Consider int value for logic delete boolean value --- .../base/BaseEntityWithLogicDelete.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/base/BaseEntityWithLogicDelete.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/base/BaseEntityWithLogicDelete.java index 6c24260..12e8ca8 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/base/BaseEntityWithLogicDelete.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/base/BaseEntityWithLogicDelete.java @@ -1,10 +1,17 @@ package com.schbrain.framework.autoconfigure.mybatis.base; +import cn.hutool.core.util.NumberUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.schbrain.framework.autoconfigure.mybatis.constant.MybatisConstants; import lombok.*; +import java.io.IOException; + /** * 带逻辑删除的基础实体类, 此类属性不需要显式设置, 框架会自动处理 * @@ -22,6 +29,7 @@ public class BaseEntityWithLogicDelete extends BaseEntity { * 注意:默认不参与查询, 只有写 sql 明确指定查询此字段的时候才有值 */ @TableLogic + @JsonDeserialize(using = LogicDeleteDeserializer.class) @TableField(value = MybatisConstants.DELETED, select = false) protected Boolean deleted; @@ -35,4 +43,20 @@ public class BaseEntityWithLogicDelete extends BaseEntity { @TableField(value = MybatisConstants.DELETE_VERSION, select = false) protected Long deleteVersion; + public static class LogicDeleteDeserializer extends JsonDeserializer { + + @Override + public Boolean deserialize(JsonParser parser, DeserializationContext context) throws IOException { + String currentValue = parser.getValueAsString(); + if (currentValue == null) { + return null; + } + if (NumberUtil.isNumber(currentValue)) { + return NumberUtil.parseInt(currentValue) == 1; + } + return Boolean.parseBoolean(currentValue); + } + + } + } -- GitLab