feat: add highgo support, and fix bugs

This commit is contained in:
2025-03-28 22:09:49 +08:00
parent 583b5864d5
commit dd60a99f45
10 changed files with 242 additions and 102 deletions

View File

@@ -42,8 +42,11 @@ public interface TableMapper {
List<Map<String, Object>> getListNoPage(@Param("typeName") String tableName, @Param("info") Map<String, Object> map);
Object getSequence(@Param("tableName") String tableName);
Object getHighGoSequence(@Param("tableName") String tableName);
boolean judgeHighGoSequenceExist(@Param("tableName") String tableName);
boolean judgeDamengSequenceExist(@Param("tableName") String tableName);
int createSequence(@Param("tableName") String tableName, @Param("lastId")Object lastId);
int createHighGoSequence(@Param("tableName") String tableName, @Param("lastId")Object lastId);
Long count(@Param("tableName")String tableName,@Param("sql")String sql);

View File

@@ -13,7 +13,7 @@ import java.util.Map;
public interface BaseMapper {
<E> int save(DataMap<E> dataMap);
String getDataConfig();
int save(String tableName, String pkName, Map<String, Object> data);
<E> int save(E e);

View File

@@ -39,7 +39,7 @@ public class BaseMapperImpl implements BaseMapper {
}
@Override
public <E> int save(DataMap<E> dataMap) {
public String getDataConfig() {
String key;
DatasourceConfig datasourceConfig = new DatasourceConfig();
try {
@@ -58,17 +58,26 @@ public class BaseMapperImpl implements BaseMapper {
if (dataType.contains("sqlite")) {
datasourceConfig.setCommonType(DataUnit.SQLITE);
}
if(dataType.contains("highgo")) {
if (dataType.contains("highgo")) {
datasourceConfig.setCommonType(DataUnit.HANGO);
}
}
return datasourceConfig.getCommonType();
}
@Override
public <E> int save(DataMap<E> dataMap) {
String dataType = getDataConfig();
JudgesNull(dataMap.getData(), "data can not be null!");
JudgesNull(dataMap.getTableName(), "tableName can not be null!");
if(DataUnit.HANGO.equals(dataType)){
dataMap.setData(formatMap(dataMap.getData()));
}
if (StringUtils.isEmpty(dataMap.getPkName())) {
dataMap.setPkName("ID");
}
int i;
if (DataUnit.ORACLE.equals(datasourceConfig.getCommonType()) || DataUnit.DAMENG.equals(datasourceConfig.getCommonType()) || DataUnit.HANGO.equals(datasourceConfig.getCommonType())) {
if (DataUnit.ORACLE.equals(dataType) || DataUnit.DAMENG.equals(dataType) || DataUnit.HANGO.equals(dataType)) {
if (org.springframework.util.StringUtils.isEmpty(dataMap.get(dataMap.getPkName()))) {
Object id = getSequence(dataMap.getTableName(), dataMap.getPkName());
dataMap.toBuilder().add(dataMap.getPkName(), id);
@@ -85,38 +94,37 @@ public class BaseMapperImpl implements BaseMapper {
return i;
}
private String formatTable(String tableName) {
return "`"+tableName+"`";
public Map<String, Object> formatMap(Map<String, Object> data){
// 遍历 Map 并转换值
for (Map.Entry<String, Object> entry : data.entrySet()) {
Object value = entry.getValue();
if (value instanceof String) {
String strValue = (String) value;
if (strValue.matches("-?\\d+")) { // 匹配整数
data.put(entry.getKey(), Long.parseLong(strValue));
} else if (strValue.matches("-?\\d*\\.\\d+")) { // 匹配浮点数
data.put(entry.getKey(), (long) Double.parseDouble(strValue));
}
} else if (value instanceof Number) {
data.put(entry.getKey(), ((Number) value).longValue());
}
}
return data;
}
@Override
public int save(String tableName, String pkName, Map<String, Object> data) {
JudgesNull(tableName, "data can not be null!");
JudgesNull(data, "tableName can not be null!");
tableName = formatTable(tableName);
String key;
DatasourceConfig datasourceConfig = new DatasourceConfig();
try {
key = DBContextHolder.getDataSource();
datasourceConfig = DataSourceUtil.get(key);
} catch (Exception e) {
if (dataType.contains("oracle")) {
datasourceConfig.setCommonType(DataUnit.ORACLE);
}
if (dataType.contains("mysql")) {
datasourceConfig.setCommonType(DataUnit.MYSQL);
}
if (dataType.contains("DmDriver")) {
datasourceConfig.setCommonType(DataUnit.DAMENG);
}
if (dataType.contains("sqlite")) {
datasourceConfig.setCommonType(DataUnit.SQLITE);
}
String dataType = getDataConfig();
if(DataUnit.HANGO.equals(dataType)){
data = formatMap(data);
}
if (StringUtils.isEmpty(pkName)) {
pkName = "ID";
}
int i;
if (datasourceConfig.getCommonType().equals(DataUnit.ORACLE) || datasourceConfig.getCommonType().equals(DataUnit.DAMENG)) {
if (DataUnit.ORACLE.equals(dataType) || DataUnit.DAMENG.equals(dataType) || DataUnit.HANGO.equals(dataType)) {
if (org.springframework.util.StringUtils.isEmpty(data.get(pkName))) {
data.put(pkName, getSequence(tableName, pkName));
}
@@ -139,9 +147,8 @@ public class BaseMapperImpl implements BaseMapper {
private int updateByWhere(Condition condition, String tableName, Map<String, Object> data) {
Map<String, Object> params = condition.getParamMap();
tableName = formatTable(tableName);
params.put("tableName", tableName);
params.put("info", data);
params.put("info", formatMap(data));
params.put("sql", condition.getSql());
int i = sqlSessionTemplate.update(TABLE_MAPPER_PACKAGE + "updateByWhere", params);
return i;
@@ -252,7 +259,6 @@ public class BaseMapperImpl implements BaseMapper {
private int deleteByWhere(Condition condition, String tableName) {
Map<String, Object> params = condition.getParamMap();
tableName = formatTable(tableName);
params.put("tableName", tableName);
params.put("sql", condition.getSql());
return sqlSessionTemplate.delete(TABLE_MAPPER_PACKAGE + "deleteByWhere", params);
@@ -339,7 +345,6 @@ public class BaseMapperImpl implements BaseMapper {
@Override
public List<Map<String, Object>> selectAll(String tableName) {
JudgesNull(tableName, "tableName can not be null!");
tableName = formatTable(tableName);
return tableMapper.useSql(SelectCondition.builder().tableName(tableName).build().getSql());
}
@@ -387,8 +392,8 @@ public class BaseMapperImpl implements BaseMapper {
public <E> PageInfo<Map<String, Object>> selectByEqual(DataMap<E> dataMap, Map<String, Object> map, WebPageInfo webPageInfo) {
JudgesNull(dataMap.getTableName(), "tableName can not be null!");
Condition condition = equal(dataMap, map);
if(webPageInfo.isEnableCache()){
return MyPageHelper.start(webPageInfo,condition.getSql(),() -> selectList(condition));
if (webPageInfo.isEnableCache()) {
return MyPageHelper.start(webPageInfo, condition.getSql(), () -> selectList(condition));
}
MyPageHelper.start(webPageInfo);
return new PageInfo<>(selectList(condition));
@@ -398,8 +403,8 @@ public class BaseMapperImpl implements BaseMapper {
public PageInfo<Map<String, Object>> selectByEqual(String tableName, Map<String, Object> map, WebPageInfo webPageInfo) {
JudgesNull(tableName, "tableName can not be null!");
Condition condition = equal(DataMap.builder().tableName(tableName).build(), map);
if(webPageInfo.isEnableCache()){
return MyPageHelper.start(webPageInfo,condition.getSql(),() -> selectList(condition));
if (webPageInfo.isEnableCache()) {
return MyPageHelper.start(webPageInfo, condition.getSql(), () -> selectList(condition));
}
MyPageHelper.start(webPageInfo);
return new PageInfo<>(selectList(condition));
@@ -482,8 +487,8 @@ public class BaseMapperImpl implements BaseMapper {
@Override
public PageInfo<Map<String, Object>> selectByCondition(Condition condition, WebPageInfo webPageInfo) {
MyPageHelper.start(webPageInfo);
if(webPageInfo.isEnableCache()){
return MyPageHelper.start(webPageInfo,condition.getSql(),() -> selectList(condition));
if (webPageInfo.isEnableCache()) {
return MyPageHelper.start(webPageInfo, condition.getSql(), () -> selectList(condition));
}
return new PageInfo<>(selectList(condition));
}
@@ -492,9 +497,9 @@ public class BaseMapperImpl implements BaseMapper {
public <E> PageInfo<Map<String, Object>> selectByCondition(DataMap<E> dataMap, Condition condition, WebPageInfo webPageInfo) {
JudgesNull(dataMap.getTableName(), "tableName can not be null!");
condition = condition.toCreatCriteria(dataMap).build();
if(webPageInfo.isEnableCache()){
if (webPageInfo.isEnableCache()) {
Condition finalCondition = condition;
return MyPageHelper.start(webPageInfo,condition.getSql(),() -> selectList(finalCondition));
return MyPageHelper.start(webPageInfo, condition.getSql(), () -> selectList(finalCondition));
}
MyPageHelper.start(webPageInfo);
return new PageInfo<>(selectList(condition));
@@ -504,9 +509,9 @@ public class BaseMapperImpl implements BaseMapper {
public PageInfo<Map<String, Object>> selectByCondition(String tableName, Condition condition, WebPageInfo webPageInfo) {
JudgesNull(tableName, "tableName can not be null!");
condition = condition.toCreatCriteria(DataMap.builder().tableName(tableName).build()).build();
if(webPageInfo.isEnableCache()){
if (webPageInfo.isEnableCache()) {
Condition finalCondition = condition;
return MyPageHelper.start(webPageInfo,condition.getSql(),() -> selectList(finalCondition));
return MyPageHelper.start(webPageInfo, condition.getSql(), () -> selectList(finalCondition));
}
MyPageHelper.start(webPageInfo);
return new PageInfo<>(selectList(condition));
@@ -516,9 +521,9 @@ public class BaseMapperImpl implements BaseMapper {
public PageInfo<Map<String, Object>> selectByCondition(String tableName, List<String> fieldList, Condition condition, WebPageInfo webPageInfo) {
JudgesNull(tableName, "tableName can not be null!");
condition = condition.toCreatCriteria(DataMap.builder().tableName(tableName).fieldList(fieldList).build()).build();
if(webPageInfo.isEnableCache()){
if (webPageInfo.isEnableCache()) {
Condition finalCondition = condition;
return MyPageHelper.start(webPageInfo,condition.getSql(),() -> selectList(finalCondition));
return MyPageHelper.start(webPageInfo, condition.getSql(), () -> selectList(finalCondition));
}
MyPageHelper.start(webPageInfo);
return new PageInfo<>(selectList(condition));
@@ -528,9 +533,9 @@ public class BaseMapperImpl implements BaseMapper {
public PageInfo<Map<String, Object>> selectByCondition(String tableName, String fieldList, Condition condition, WebPageInfo webPageInfo) {
JudgesNull(tableName, "tableName can not be null!");
condition = condition.toCreatCriteria(DataMap.builder().tableName(tableName).fields(fieldList).build()).build();
if(webPageInfo.isEnableCache()){
if (webPageInfo.isEnableCache()) {
Condition finalCondition = condition;
return MyPageHelper.start(webPageInfo,condition.getSql(),() -> selectList(finalCondition));
return MyPageHelper.start(webPageInfo, condition.getSql(), () -> selectList(finalCondition));
}
MyPageHelper.start(webPageInfo);
return new PageInfo<>(selectList(condition));
@@ -579,7 +584,6 @@ public class BaseMapperImpl implements BaseMapper {
}
@Override
public List<Map<String, Object>> selectJoinByCondition(String tableName, List<JoinCondition> joinCondition, Condition condition) {
JudgesNull(tableName, "tableName can not be null!");
@@ -637,8 +641,8 @@ public class BaseMapperImpl implements BaseMapper {
@Override
public PageInfo<Map<String, Object>> selectSqlByPage(String sql, WebPageInfo webPageInfo) {
if(webPageInfo.isEnableCache()){
return MyPageHelper.start(webPageInfo,sql,() -> (tableMapper.useSql(sql)));
if (webPageInfo.isEnableCache()) {
return MyPageHelper.start(webPageInfo, sql, () -> (tableMapper.useSql(sql)));
}
MyPageHelper.start(webPageInfo);
return new PageInfo<>(tableMapper.useSql(sql));
@@ -646,15 +650,15 @@ public class BaseMapperImpl implements BaseMapper {
@Override
public List<Map<String, Object>> selectSql(String sql, Map<String, Object> params) {
params.put("sql",sql);
params.put("sql", sql);
return sqlSessionTemplate.selectList(TABLE_MAPPER_PACKAGE + "useSql", params);
}
@Override
public PageInfo<Map<String, Object>> selectSqlByPage(String sql, Map<String, Object> params, WebPageInfo webPageInfo) {
params.put("sql",sql);
if(webPageInfo.isEnableCache()){
return MyPageHelper.start(webPageInfo,sql,() -> sqlSessionTemplate.selectList(TABLE_MAPPER_PACKAGE + "useSql", params));
params.put("sql", sql);
if (webPageInfo.isEnableCache()) {
return MyPageHelper.start(webPageInfo, sql, () -> sqlSessionTemplate.selectList(TABLE_MAPPER_PACKAGE + "useSql", params));
}
MyPageHelper.start(webPageInfo);
return new PageInfo<>(sqlSessionTemplate.selectList(TABLE_MAPPER_PACKAGE + "useSql", params));
@@ -667,16 +671,16 @@ public class BaseMapperImpl implements BaseMapper {
@Override
public Map<String, Object> selectOneSql(String sql, Map<String, Object> params) {
params.put("sql",sql);
params.put("sql", sql);
return sqlSessionTemplate.selectOne(TABLE_MAPPER_PACKAGE + "userSqlByOne", params);
}
@Override
public Long count(String tableName, Condition condition) {
String sql = condition.getSql();
sql = "SELECT count(0) as COUNT FROM "+tableName+" " + sql;
sql = "SELECT count(0) as COUNT FROM " + tableName + " " + sql;
condition.setSql(sql);
Map<String,Object> map = selectOne(condition);
Map<String, Object> map = selectOne(condition);
return Long.parseLong(String.valueOf(map.get("COUNT")));
}
@@ -689,7 +693,7 @@ public class BaseMapperImpl implements BaseMapper {
public int saveBatch(String tableName, String pkName, List<Map<String, Object>> list) {
JudgesNull(tableName, "tableName can not be null!");
JudgesNull(pkName, "pkName can not be null!");
if(list==null|| list.isEmpty()){
if (list == null || list.isEmpty()) {
throw new ServiceException("list can not empty");
}
// JudgesNull(data, "tableName can not be null!");
@@ -717,9 +721,9 @@ public class BaseMapperImpl implements BaseMapper {
}
if (datasourceConfig.getCommonType().equals(DataUnit.ORACLE) || datasourceConfig.getCommonType().equals(DataUnit.DAMENG)) {
for(Map<String,Object> map:list){
for (Map<String, Object> map : list) {
Object id = getSequence(tableName, pkName);
map.put(pkName,id);
map.put(pkName, id);
}
}
int i = tableMapper.insertBatch(list, tableName);
@@ -731,7 +735,7 @@ public class BaseMapperImpl implements BaseMapper {
public int updateBatchByPk(String tableName, String pkName, List<Map<String, Object>> list) {
JudgesNull(tableName, "tableName can not be null!");
JudgesNull(pkName, "pkName can not be null!");
if(list==null|| list.isEmpty()){
if (list == null || list.isEmpty()) {
throw new ServiceException("list can not empty");
}
StringBuilder sql = new StringBuilder();
@@ -765,7 +769,7 @@ public class BaseMapperImpl implements BaseMapper {
return 0;
}
paramMap.put("sql", sql.toString());
return this.sqlSessionTemplate.update(TABLE_MAPPER_PACKAGE+"updateBatchByPk", paramMap);
return this.sqlSessionTemplate.update(TABLE_MAPPER_PACKAGE + "updateBatchByPk", paramMap);
}
public void JudgesNull(Object object, String str) {
@@ -775,20 +779,36 @@ public class BaseMapperImpl implements BaseMapper {
}
public Object getSequence(String tableName, String pkName) {
String dataType = getDataConfig();
Object id;
try {
id = tableMapper.getSequence(tableName);
} catch (Exception e) {
MyPageHelper.noCount(WebPageInfo.builder().pageNum(1).pageSize(1).order(WebPageInfo.DESC).sortField(pkName).build());
DataMap<Object> dataMap = DataMap.builder().tableName(tableName).pkName(pkName).fields(pkName).build();
Condition condition = Condition.creatCriteria(dataMap).build();
Map<String, Object> map = selectOneByCondition(condition);
if (map == null) {
tableMapper.createSequence(tableName, 1);
} else {
tableMapper.createSequence(tableName, map.get(pkName));
if (DataUnit.HANGO.equals(dataType)) {
if (!tableMapper.judgeHighGoSequenceExist(tableName.toLowerCase())) {
MyPageHelper.noCount(WebPageInfo.builder().pageNum(1).pageSize(1).order(WebPageInfo.DESC).sortField(pkName).build());
DataMap<Object> dataMap = DataMap.builder().tableName(tableName).pkName(pkName).fields(pkName).build();
Condition condition = Condition.creatCriteria(dataMap).build();
Map<String, Object> map = selectOneByCondition(condition);
if (map == null) {
tableMapper.createHighGoSequence(tableName, 1);
} else {
tableMapper.createHighGoSequence(tableName, map.get(pkName));
}
}
id = tableMapper.getHighGoSequence(tableName);
} else {
try {
id = tableMapper.getSequence(tableName);
} catch (Exception e) {
MyPageHelper.noCount(WebPageInfo.builder().pageNum(1).pageSize(1).order(WebPageInfo.DESC).sortField(pkName).build());
DataMap<Object> dataMap = DataMap.builder().tableName(tableName).pkName(pkName).fields(pkName).build();
Condition condition = Condition.creatCriteria(dataMap).build();
Map<String, Object> map = selectOneByCondition(condition);
if (map == null) {
tableMapper.createSequence(tableName, 1);
} else {
tableMapper.createSequence(tableName, map.get(pkName));
}
id = tableMapper.getSequence(tableName);
}
id = tableMapper.getSequence(tableName);
}
return Long.parseLong(id.toString()) + 1L;
}

View File

@@ -119,7 +119,7 @@ public class Condition implements Serializable {
}
public static ConditionBuilder creatCriteria(SelectCondition selectCondition) {
return new ConditionBuilder(selectCondition,new HashMap<>());
return new ConditionBuilder(selectCondition, new HashMap<>());
}
public static ConditionBuilder creatCriteria(SelectCondition selectCondition, boolean flag) {
@@ -128,7 +128,7 @@ public class Condition implements Serializable {
public static ConditionBuilder creatCriteria(DataMap dataMap) {
JudesNull(dataMap.getTableName(), "tableName can not be null!");
return new ConditionBuilder(dataMap.getSelectCondition(),new HashMap<>());
return new ConditionBuilder(dataMap.getSelectCondition(), new HashMap<>());
}
public static ConditionBuilder creatCriteria(DataMap dataMap, boolean flag) {
@@ -147,15 +147,15 @@ public class Condition implements Serializable {
}
public ConditionBuilder toCreatCriteria() {
return new ConditionBuilder(this.sql,this.paramMap);
return new ConditionBuilder(this.sql, this.paramMap);
}
public ConditionBuilder toCreatCriteria(SelectCondition selectCondition) {
return new ConditionBuilder(selectCondition, this.sql,this.paramMap);
return new ConditionBuilder(selectCondition, this.sql, this.paramMap);
}
public ConditionBuilder toCreatCriteria(DataMap dataMap) {
return new ConditionBuilder(dataMap.getSelectCondition(), this.sql,this.paramMap);
return new ConditionBuilder(dataMap.getSelectCondition(), this.sql, this.paramMap);
}
public static class ConditionBuilder {
@@ -199,7 +199,7 @@ public class Condition implements Serializable {
this.flag = flag;
}
public ConditionBuilder(SelectCondition selectCondition,Map<String,Object> paramMap) {
public ConditionBuilder(SelectCondition selectCondition, Map<String, Object> paramMap) {
this.selectCondition = selectCondition;
this.selecSql = selectCondition.getSql();
this.paramMap = paramMap;
@@ -211,7 +211,7 @@ public class Condition implements Serializable {
this.selecSql = selectCondition.getSql();
}
public ConditionBuilder(SelectCondition selectCondition, String sql,Map<String,Object> paramMap) {
public ConditionBuilder(SelectCondition selectCondition, String sql, Map<String, Object> paramMap) {
spliteSql(sql);
this.selectCondition = selectCondition;
this.selecSql = selectCondition.getSql();
@@ -240,7 +240,19 @@ public class Condition implements Serializable {
this.selecSql = selectCondition.getSql();
}
public ConditionBuilder(String sql,Map<String,Object> paramMap) {
private Object formatValue(Object value) {
if(value instanceof String) {
String str = (String)value;
if (str.matches("-?\\d+")) { // 匹配整数
return Long.parseLong(str);
} else if (str.matches("-?\\d*\\.\\d+")) { // 匹配浮点数
return Double.parseDouble(str);
}
}
return value;
}
public ConditionBuilder(String sql, Map<String, Object> paramMap) {
this.sql = sql;
this.paramMap = paramMap;
spliteSql(sql);
@@ -273,8 +285,8 @@ public class Condition implements Serializable {
value = value.toString().replaceAll("\"", "");
}
String sqlKey = "item_" + IdUtil.fastUUID();
this.conditionSql += " `" + key +"` "+ EQUAL + "#{" + sqlKey + "}";
this.paramMap.put(sqlKey, value);
this.conditionSql += " " + key + EQUAL + "#{" + sqlKey + "}";
this.paramMap.put(sqlKey, formatValue(value));
return this;
}
@@ -289,8 +301,12 @@ public class Condition implements Serializable {
}
public ConditionBuilder like(String key, Object value) {
sqlCheckLike(value);
this.conditionSql += " `" + key +"` "+ " " + LIKE + " '" + value + "'";
if (value.toString().contains("\"")) {
value = value.toString().replaceAll("\"", "");
}
String sqlKey = "item_" + IdUtil.fastUUID();
this.conditionSql += " " + key + " " + LIKE + " CONCAT('%',#{" + sqlKey + "},'%')";
this.paramMap.put(sqlKey, formatValue(value));
return this;
}
@@ -310,7 +326,7 @@ public class Condition implements Serializable {
int i = 1;
for (Object object : value) {
String sqlKey = "item_" + IdUtil.fastUUID();
this.paramMap.put(sqlKey, object);
this.paramMap.put(sqlKey, formatValue(object));
inStr.append("#{").append(sqlKey).append("}");
if (i != value.size()) {
inStr.append(",");
@@ -318,7 +334,7 @@ public class Condition implements Serializable {
i++;
}
inStr.append(R_CURVES);
this.conditionSql += " `" + key +"` "+ " " + IN + " " + inStr.toString();
this.conditionSql += " " + key + " " + IN + " " + inStr.toString();
return this;
}
@@ -335,9 +351,9 @@ public class Condition implements Serializable {
public ConditionBuilder between(String key, Object start, Object end) {
String sqlKey = "item_" + IdUtil.fastUUID();
String sqlKey2 = "item_" + IdUtil.fastUUID();
this.paramMap.put(sqlKey, start);
this.paramMap.put(sqlKey2, end);
this.conditionSql += " `" + key +"` "+ " " + BETWEEN + " #{" + sqlKey + "} " + AND + " #{" + sqlKey2 + "} ";
this.paramMap.put(sqlKey, formatValue(start));
this.paramMap.put(sqlKey2, formatValue(end));
this.conditionSql += " " + key + " " + BETWEEN + " #{" + sqlKey + "} " + AND + " #{" + sqlKey2 + "} ";
return this;
}
@@ -353,8 +369,8 @@ public class Condition implements Serializable {
public ConditionBuilder lt(String key, Object value) {
String sqlKey = "item_" + IdUtil.fastUUID();
this.paramMap.put(sqlKey, value);
this.conditionSql += " `" + key +"` "+ " " + LT + " #{" + sqlKey + "} ";
this.paramMap.put(sqlKey, formatValue(value));
this.conditionSql += " " + key + " " + LT + " #{" + sqlKey + "} ";
return this;
}
@@ -375,8 +391,8 @@ public class Condition implements Serializable {
public ConditionBuilder notEqual(String key, Object value) {
String sqlKey = "item_" + IdUtil.fastUUID();
this.paramMap.put(sqlKey, value);
this.conditionSql += " `" + key +"` "+ " " + NOT_EQUAL + " #{" + sqlKey + "} ";
this.paramMap.put(sqlKey, formatValue(value));
this.conditionSql += " " + key + " " + NOT_EQUAL + " #{" + sqlKey + "} ";
return this;
}
@@ -392,8 +408,8 @@ public class Condition implements Serializable {
public ConditionBuilder gt(String key, Object value) {
String sqlKey = "item_" + IdUtil.fastUUID();
this.paramMap.put(sqlKey, value);
this.conditionSql += " `" + key +"` "+ " " + GT + " #{" + sqlKey + "} ";
this.paramMap.put(sqlKey, formatValue(value));
this.conditionSql += " " + key + " " + GT + " #{" + sqlKey + "} ";
return this;
}
@@ -409,8 +425,8 @@ public class Condition implements Serializable {
public ConditionBuilder lte(String key, Object value) {
String sqlKey = "item_" + IdUtil.fastUUID();
this.paramMap.put(sqlKey, value);
this.conditionSql += " `" + key +"` "+ " " + LTE + " #{" + value.toString() + "} ";
this.paramMap.put(sqlKey, formatValue(value));
this.conditionSql += " " + key + " " + LTE + " #{" + value.toString() + "} ";
return this;
}
@@ -426,8 +442,8 @@ public class Condition implements Serializable {
public ConditionBuilder gte(String key, Object value) {
String sqlKey = "item_" + IdUtil.fastUUID();
this.paramMap.put(sqlKey, value);
this.conditionSql += " `" + key +"` "+ " " + GTE + " #{" + value.toString() + "} ";
this.paramMap.put(sqlKey, formatValue(value));
this.conditionSql += " " + key + " " + GTE + " #{" + value.toString() + "} ";
return this;
}
@@ -492,7 +508,7 @@ public class Condition implements Serializable {
if (StringUtils.isEmpty(this.conditionSql)) {
this.sql = this.selecSql;
}
return new Condition(this.sql, this.selectCondition,this.paramMap);
return new Condition(this.sql, this.selectCondition, this.paramMap);
}
}

View File

@@ -0,0 +1,26 @@
package com.taixingyiji.base.module.data.module;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import tk.mybatis.mapper.autoconfigure.ConfigurationCustomizer;
/**
* @className MyBatisConfig
* @author lhc
* @date 2025年03月28日 19:43
* @description 描述
* @version 1.0
*/
@Configuration
public class MyBatisConfig {
@Value("${mybatis.enable-highgo}")
private boolean customObjectWrapperEnabled;
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> {
if (customObjectWrapperEnabled) {
configuration.setObjectWrapperFactory(new UpperCaseMapWrapperFactory());
}
};
}
}

View File

@@ -113,7 +113,7 @@ public class SelectCondition implements Serializable {
}
public SelectBuilder tableName(String tableName) {
this.tableName = "`"+tableName+"`";
this.tableName = tableName;
return this;
}

View File

@@ -0,0 +1,24 @@
package com.taixingyiji.base.module.data.module;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.wrapper.MapWrapper;
import java.util.Map;
/**
* @author lhc
* @version 1.0
* @className UpperCaseMapWrapper
* @date 2025年03月28日 19:41
* @description 描述
*/
public class UpperCaseMapWrapper extends MapWrapper {
public UpperCaseMapWrapper(MetaObject metaObject, Map<String, Object> map) {
super(metaObject, map);
}
@Override
public String findProperty(String name, boolean useCamelCaseMapping) {
return name==null?"":name.toUpperCase() ;
}
}

View File

@@ -0,0 +1,26 @@
package com.taixingyiji.base.module.data.module;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.wrapper.ObjectWrapper;
import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
import java.util.Map;
/**
* @author lhc
* @version 1.0
* @className UpperCaseMapWrapperFactory
* @date 2025年03月28日 19:40
* @description 描述
*/
public class UpperCaseMapWrapperFactory implements ObjectWrapperFactory {
@Override
public boolean hasWrapperFor(Object object) {
return object instanceof Map;
}
@Override
public ObjectWrapper getWrapperFor(MetaObject metaObject, Object object) {
return new UpperCaseMapWrapper(metaObject, (Map) object);
}
}

View File

@@ -156,7 +156,7 @@ public class ShiroServiceImpl implements ShiroService {
public FtToken findByToken(String accessToken) {
FtToken osToken = new FtToken();
// osToken.setToken(accessToken);
Condition condition = Condition.creatCriteria().equal("TOKEN", accessToken).build();
Condition condition = Condition.creatCriteria().andEqual("TOKEN", accessToken).build();
Map<String, Object> map = baseMapper.selectOneByCondition("FT_TOKEN", condition);
osToken.setToken((String) map.get("TOKEN"));
osToken.setTokenId((String) map.get("TOKEN_ID"));

View File

@@ -157,6 +157,9 @@
select ${tableName}_seq.nextval
from dual
</select>
<select id="getHighGoSequence" resultType="java.lang.Object">
select ${tableName}_seq.nextval
</select>
<insert id="createSequence">
CREATE
SEQUENCE ${tableName}_seq
@@ -167,6 +170,28 @@
INCREMENT BY 1
NOCACHE
</insert>
<insert id="createHighGoSequence">
CREATE SEQUENCE ${tableName}_seq
MINVALUE 1
NO MAXVALUE
START WITH ${lastId}
INCREMENT BY 1
CACHE 1;
</insert>
<select id="judgeHighGoSequenceExist" resultType="boolean">
SELECT EXISTS (
SELECT 1
FROM pg_class
WHERE relkind = 'S'
AND relname = '${tableName}_seq'
AND pg_table_is_visible(oid)
);
</select>
<select id="judgeDamengSequenceExist" resultType="boolean">
SELECT COUNT(*)
FROM SYSOBJECTS
WHERE NAME = '${tableName}_seq' AND SUBTYPE$ = 'SEQUENCE';
</select>
<select id="count" resultType="java.lang.Long">
SELECT count(0) FROM ${tableName} ${sql}
</select>