修复:达梦数据库查询数据时,关键词导致的报错

This commit is contained in:
diantu
2023-02-06 17:26:30 +08:00
parent 9b7804511e
commit 704d6c73b4

View File

@@ -1,8 +1,12 @@
package com.zyplayer.doc.db.service.database;
import com.zyplayer.doc.db.controller.param.DataViewParam;
import com.zyplayer.doc.db.framework.db.enums.DatabaseProductEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* 达梦数据查询服务实现类
*
@@ -26,4 +30,41 @@ public class DmServiceImpl extends DbBaseService {
public String getUseDbSql(String dbName) {
return null;
}
/**
* 获取分页查询的SQL
*
* @return 分页查询的SQL
* @author diantu
* @since 2023年2月6日
*/
@Override
public String getQueryPageSql(DataViewParam dataViewParam) {
String queryColumns = StringUtils.defaultIfBlank(dataViewParam.getRetainColumn(), "*");
if(!Objects.equals(queryColumns, "*")){
String[] queryColumnsArray = queryColumns.split(",");
String resultString = "";
for(int i=0;i<queryColumnsArray.length;i++){
if(queryColumnsArray[i].equalsIgnoreCase("IDENTITY")){
queryColumnsArray[i] = "\"IDENTITY\"";
}
if(i < queryColumnsArray.length-1){
resultString +=queryColumnsArray[i] + ",";
}else{
resultString +=queryColumnsArray[i];
}
}
queryColumns = resultString;
}
StringBuilder sqlSb = new StringBuilder();
sqlSb.append(String.format("select %s from %s.%s", queryColumns, dataViewParam.getDbName(), dataViewParam.getTableName()));
if (StringUtils.isNotBlank(dataViewParam.getCondition())) {
sqlSb.append(String.format(" where %s", dataViewParam.getCondition()));
}
if (StringUtils.isNotBlank(dataViewParam.getOrderColumn()) && StringUtils.isNotBlank(dataViewParam.getOrderType())) {
sqlSb.append(String.format(" order by %s %s", dataViewParam.getOrderColumn(), dataViewParam.getOrderType()));
}
sqlSb.append(String.format(" limit %s offset %s", dataViewParam.getPageSize(), dataViewParam.getOffset()));
return sqlSb.toString();
}
}