From a8886b3153b1662e056953959dcb4801c0281027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 20 Feb 2025 18:05:40 +0800 Subject: [PATCH] =?UTF-8?q?mybatisFlex=E8=87=AA=E5=AE=9A=E4=B9=89=E6=96=B9?= =?UTF-8?q?=E8=A8=80=E8=A7=A3=E6=9E=90=E5=99=A8=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/config/MyCommonsDialectImpl.java | 45 +++++++++++++++++++ .../com/czg/config/MybatisFlexConfig.java | 20 +++++++++ .../java/com/czg/utils/JoinQueryWrapper.java | 4 -- 3 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 cash-common/cash-common-api-config/src/main/java/com/czg/config/MyCommonsDialectImpl.java create mode 100644 cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java diff --git a/cash-common/cash-common-api-config/src/main/java/com/czg/config/MyCommonsDialectImpl.java b/cash-common/cash-common-api-config/src/main/java/com/czg/config/MyCommonsDialectImpl.java new file mode 100644 index 00000000..3e9c766b --- /dev/null +++ b/cash-common/cash-common-api-config/src/main/java/com/czg/config/MyCommonsDialectImpl.java @@ -0,0 +1,45 @@ +package com.czg.config; + +import com.mybatisflex.core.dialect.impl.CommonsDialectImpl; +import com.mybatisflex.core.exception.FlexExceptions; +import com.mybatisflex.core.exception.locale.LocalizedFormats; +import com.mybatisflex.core.query.CPI; +import com.mybatisflex.core.query.QueryCondition; +import com.mybatisflex.core.query.QueryTable; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.core.util.StringUtil; +import org.springframework.stereotype.Component; + +import java.util.List; + +import static com.mybatisflex.core.constant.SqlConsts.ASTERISK; +import static com.mybatisflex.core.constant.SqlConsts.WHERE; + +/** + * 自定义sql解析器 备用 + */ +//@Component +public class MyCommonsDialectImpl extends CommonsDialectImpl { + @Override + public String wrap(String keyword) { + return ASTERISK.equals(keyword) ? keyword : keywordWrap.wrap(keyword); + } + + protected void buildWhereSql(StringBuilder sqlBuilder, QueryWrapper queryWrapper, List queryTables, boolean allowNoCondition) { + QueryCondition whereQueryCondition = CPI.getWhereQueryCondition(queryWrapper); + if (whereQueryCondition != null) { + String whereSql = whereQueryCondition.toSql(queryTables, this); + if (StringUtil.hasText(whereSql)) { + sqlBuilder.append(WHERE).append(whereSql); + } else if (!allowNoCondition) { + throw FlexExceptions.wrap(LocalizedFormats.UPDATE_OR_DELETE_NOT_ALLOW); + } + } else { + // whereQueryCondition == null + if (!allowNoCondition) { + throw FlexExceptions.wrap(LocalizedFormats.UPDATE_OR_DELETE_NOT_ALLOW); + } + } + } + +} diff --git a/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java b/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java new file mode 100644 index 00000000..416c0ac7 --- /dev/null +++ b/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java @@ -0,0 +1,20 @@ +package com.czg.config; + +import com.mybatisflex.core.dialect.DbType; +import com.mybatisflex.core.dialect.DialectFactory; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +/** + * 自定义sql方言 + */ +//@Component +public class MybatisFlexConfig { +// @Resource + private MyCommonsDialectImpl myCommonsDialect; +// @PostConstruct + public void init() { + DialectFactory.registerDialect(DbType.MYSQL, myCommonsDialect); + } +} diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/utils/JoinQueryWrapper.java b/cash-common/cash-common-tools/src/main/java/com/czg/utils/JoinQueryWrapper.java index c12f94e5..e2341428 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/utils/JoinQueryWrapper.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/utils/JoinQueryWrapper.java @@ -7,8 +7,6 @@ import com.mybatisflex.core.query.*; import com.mybatisflex.core.table.TableInfo; import com.mybatisflex.core.table.TableInfoFactory; import com.mybatisflex.core.util.LambdaGetter; -import com.mybatisflex.core.util.LambdaUtil; -import com.mybatisflex.core.util.MapUtil; import java.io.Serializable; import java.lang.invoke.SerializedLambda; @@ -108,8 +106,6 @@ public class JoinQueryWrapper extends QueryWrapper { return and(consumer, true); } - - @Override public QueryWrapper and(QueryCondition queryCondition) { return addWhereQueryCondition(queryCondition, SqlConnector.AND);