1.修复mysql数据库因数据库名包含特殊字符导致的报错问题
2.修复oracle分页语句错误 3.oracle表信息sql补全
This commit is contained in:
@@ -22,7 +22,16 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getTableStatus" resultType="com.zyplayer.doc.db.controller.vo.TableStatusVo">
|
<select id="getTableStatus" resultType="com.zyplayer.doc.db.controller.vo.TableStatusVo">
|
||||||
select 1
|
select dt.TABLE_NAME as name,
|
||||||
|
dt.NUM_ROWS as "rows",
|
||||||
|
dt.AVG_ROW_LEN as avgRowLength,
|
||||||
|
do.CREATED as createTime,
|
||||||
|
do.LAST_DDL_TIME as updateTime,
|
||||||
|
dtc.COMMENTS as "comment"
|
||||||
|
from dba_tables dt
|
||||||
|
left join dba_objects do on do.owner = dt.owner and do.object_name = dt.table_name
|
||||||
|
left join dba_tab_comments dtc on dtc.owner = dt.owner and dtc.table_name = dt.table_name
|
||||||
|
where dt.owner = #{dbName} and dt.table_name = #{tableName}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 获取表列表 -->
|
<!-- 获取表列表 -->
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.zyplayer.doc.db.service.database;
|
|||||||
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import com.zyplayer.doc.db.controller.param.DataViewParam;
|
||||||
import com.zyplayer.doc.db.controller.vo.TableDdlVo;
|
import com.zyplayer.doc.db.controller.vo.TableDdlVo;
|
||||||
import com.zyplayer.doc.db.framework.db.dto.ColumnInfoDto;
|
import com.zyplayer.doc.db.framework.db.dto.ColumnInfoDto;
|
||||||
import com.zyplayer.doc.db.framework.db.dto.ProcedureDto;
|
import com.zyplayer.doc.db.framework.db.dto.ProcedureDto;
|
||||||
@@ -48,6 +49,60 @@ public class MysqlServiceImpl extends DbBaseService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取查询总条数的SQL(mysql数据库名中含有 - 等特殊字符,需要用反引号包裹)
|
||||||
|
*
|
||||||
|
* @author diantu
|
||||||
|
* @since 2023年1月16日
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getQueryCountSql(DataViewParam dataViewParam) {
|
||||||
|
StringBuilder sqlSb = new StringBuilder();
|
||||||
|
sqlSb.append(String.format("select count(1) as counts from %s.%s", "`"+dataViewParam.getDbName()+"`", dataViewParam.getTableName()));
|
||||||
|
if (StringUtils.isNotBlank(dataViewParam.getCondition())) {
|
||||||
|
sqlSb.append(String.format(" where %s", dataViewParam.getCondition()));
|
||||||
|
}
|
||||||
|
return sqlSb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取全量数据查询的SQL(mysql数据库名中含有 - 等特殊字符,需要用反引号包裹)
|
||||||
|
*
|
||||||
|
* @author diantu
|
||||||
|
* @since 2023年1月17日
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getQueryAllSql(DataViewParam dataViewParam) {
|
||||||
|
String queryColumns = StringUtils.defaultIfBlank(dataViewParam.getRetainColumn(), "*");
|
||||||
|
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()));
|
||||||
|
}
|
||||||
|
return sqlSb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取分页查询的SQL(mysql数据库名中含有 - 等特殊字符,需要用反引号包裹)
|
||||||
|
*
|
||||||
|
* @author diantu
|
||||||
|
* @since 2023年1月17日
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getQueryPageSql(DataViewParam dataViewParam) {
|
||||||
|
String queryColumns = StringUtils.defaultIfBlank(dataViewParam.getRetainColumn(), "*");
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TableDdlVo getTableDdl(Long sourceId, String dbName, String tableName) {
|
public TableDdlVo getTableDdl(Long sourceId, String dbName, String tableName) {
|
||||||
BaseMapper baseMapper = this.getViewAuthBaseMapper(sourceId);
|
BaseMapper baseMapper = this.getViewAuthBaseMapper(sourceId);
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.zyplayer.doc.db.service.database;
|
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 com.zyplayer.doc.db.framework.db.enums.DatabaseProductEnum;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -26,4 +28,28 @@ public class OracleServiceImpl extends DbBaseService {
|
|||||||
public String getUseDbSql(String dbName) {
|
public String getUseDbSql(String dbName) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取分页查询的SQL(oracle分页)
|
||||||
|
*
|
||||||
|
* @author diantu
|
||||||
|
* @since 2023年1月17日
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getQueryPageSql(DataViewParam dataViewParam) {
|
||||||
|
String queryColumns = StringUtils.defaultIfBlank(dataViewParam.getRetainColumn(), "*");
|
||||||
|
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()));
|
||||||
|
}
|
||||||
|
StringBuilder sqlSbFinal = new StringBuilder();
|
||||||
|
Integer pageSize = dataViewParam.getPageSize() * dataViewParam.getPageNum();
|
||||||
|
Integer offsetSize = dataViewParam.getPageSize() * (dataViewParam.getPageNum() - 1) + 1;
|
||||||
|
sqlSbFinal.append(String.format("select * from ( select %s from %s", queryColumns + ",rownum rn", "(" + sqlSb + ") where rownum<=" + pageSize + " ) t2 where t2.rn >=" + offsetSize));
|
||||||
|
return sqlSbFinal.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user