From 5473de9fcc9d6c32fca0235b435a3ca4e42ae426 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Thu, 15 Jun 2023 13:14:47 +0800 Subject: [PATCH] Set project charsets --- .../autoconfigure/mybatis/biz/BizIdColumnField.java | 10 ++++++++-- .../mybatis/biz/BizIdInjectInterceptor.java | 12 ++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdColumnField.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdColumnField.java index 09f259b..ea9f3e1 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdColumnField.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdColumnField.java @@ -20,6 +20,8 @@ public class BizIdColumnField { private final String columnName; + private final Class fieldType; + private final MethodHandle bizIdFieldGetterMethodHandle; private final MethodHandle bizIdFieldSetterMethodHandle; @@ -27,8 +29,8 @@ public class BizIdColumnField { public BizIdColumnField(Class entityClass, Field bizIdField) { this.annotation = bizIdField.getAnnotation(BizId.class); this.columnName = BizIdHelper.getColumnName(entityClass, bizIdField, this.annotation); + this.fieldType = bizIdField.getType(); try { - Class fieldType = bizIdField.getType(); Lookup lookup = privateLookupIn(entityClass, lookup()); this.bizIdFieldGetterMethodHandle = lookup.findGetter(entityClass, bizIdField.getName(), fieldType); this.bizIdFieldSetterMethodHandle = lookup.findSetter(entityClass, bizIdField.getName(), fieldType); @@ -54,4 +56,8 @@ public class BizIdColumnField { } } -} + public Class getFieldType() { + return fieldType; + } + +} \ No newline at end of file diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdInjectInterceptor.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdInjectInterceptor.java index 09f64b5..5ed9893 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdInjectInterceptor.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdInjectInterceptor.java @@ -1,6 +1,8 @@ package com.schbrain.framework.autoconfigure.mybatis.biz; +import cn.hutool.core.convert.Convert; import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; +import com.schbrain.common.exception.BaseException; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.SqlCommandType; @@ -32,9 +34,15 @@ public class BizIdInjectInterceptor implements InnerInterceptor { if (bizIdType == BizIdType.ID_WORKER) { Object bizIdValue = bizColumnField.getValue(entity); if (bizIdValue == null) { - bizColumnField.setValue(entity, bizIdType.generateBizId(entity)); + Object generatedBizId = bizIdType.generateBizId(entity); + Class bizIdFieldType = bizColumnField.getFieldType(); + Object convertedBizId = Convert.convertQuietly(bizIdFieldType, generatedBizId, null); + if (convertedBizId == null) { + throw new BaseException(String.format("Cannot convert generated bizId value %s; From %s to %s", generatedBizId, generatedBizId.getClass(), bizIdFieldType)); + } + bizColumnField.setValue(entity, convertedBizId); } } } -} +} \ No newline at end of file -- GitLab