mybatisFlex自定义方言解析器测试

This commit is contained in:
张松 2025-02-20 18:05:40 +08:00
parent dadaa401c2
commit a8886b3153
3 changed files with 65 additions and 4 deletions

View File

@ -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<QueryTable> 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);
}
}
}
}

View File

@ -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);
}
}

View File

@ -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);