添加了MySQL表的新增和修改
This commit is contained in:
parent
6988b8e646
commit
c30094199a
@ -6,9 +6,13 @@ import com.cm.common.constants.ISystemConstant;
|
|||||||
import com.cm.common.exception.SearchException;
|
import com.cm.common.exception.SearchException;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
||||||
|
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
||||||
|
import com.cm.common.plugin.pojo.vos.database.table.TableOldColumnVO;
|
||||||
import com.cm.common.plugin.pojo.vos.database.table.TableVO;
|
import com.cm.common.plugin.pojo.vos.database.table.TableVO;
|
||||||
import com.cm.common.plugin.service.database.table.ITableService;
|
import com.cm.common.plugin.service.database.table.ITableService;
|
||||||
|
import com.cm.common.result.ErrorResult;
|
||||||
import com.cm.common.result.SuccessResult;
|
import com.cm.common.result.SuccessResult;
|
||||||
|
import io.swagger.annotations.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@ -32,34 +36,71 @@ public class TableController extends AbstractController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ITableService tableService;
|
private ITableService tableService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "建表", notes = "建表接口")
|
||||||
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@PostMapping("savetable")
|
@PostMapping("savetable")
|
||||||
@CheckRequestBodyAnnotation
|
@CheckRequestBodyAnnotation
|
||||||
public SuccessResult saveTable(@RequestBody TableVO tableVO) {
|
public SuccessResult saveTable(@RequestBody TableVO tableVO) {
|
||||||
return tableService.saveTable(tableVO);
|
return tableService.saveTable(tableVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("getTableByTableName/{tableName}")
|
@ApiOperation(value = "删表", notes = "删表接口")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "tableName", value = "表名", paramType = "path")
|
||||||
|
})
|
||||||
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
|
@DeleteMapping("removetable/{tableName}")
|
||||||
|
public SuccessResult removeTable(@PathVariable("tableName") String tableName) {
|
||||||
|
return tableService.removeTable(tableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "加列", notes = "加列接口")
|
||||||
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
|
@PostMapping("savetablecolumn/{tableName}")
|
||||||
|
@CheckRequestBodyAnnotation
|
||||||
|
public SuccessResult saveTableColumn(@PathVariable("tableName") String tableName, @RequestBody TableColumnVO tableColumnVO) {
|
||||||
|
return tableService.saveTableColumn(tableName, tableColumnVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "修改列", notes = "修改列")
|
||||||
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
|
@PutMapping("updatetablecolumn/{tableName}")
|
||||||
|
@CheckRequestBodyAnnotation
|
||||||
|
public SuccessResult updateTableColumn(@PathVariable("tableName") String tableName, @RequestBody TableOldColumnVO tableOldColumnVO) {
|
||||||
|
return tableService.updateTableColumn(tableName, tableOldColumnVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "修改列类型", notes = "修改列类型")
|
||||||
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
|
@PutMapping("updatetablecolumntype/{tableName}")
|
||||||
|
@CheckRequestBodyAnnotation
|
||||||
|
public SuccessResult updateTableColumnType(@PathVariable("tableName") String tableName, @RequestBody TableColumnVO tableColumnVO) {
|
||||||
|
return tableService.updateTableColumnType(tableName, tableColumnVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "通过表名查询表", notes = "通过表名查询表接口")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "tableName", value = "表名", paramType = "path")
|
||||||
|
})
|
||||||
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
|
@GetMapping("gettablebytablename/{tableName}")
|
||||||
public TableDTO getTableByTableName(@PathVariable("tableName") String tableName) {
|
public TableDTO getTableByTableName(@PathVariable("tableName") String tableName) {
|
||||||
return tableService.getTableByTableName(tableName);
|
return tableService.getTableByTableName(tableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@ApiOperation(value = "表列表", notes = "表列表接口")
|
||||||
* 表列表
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@GetMapping("listtables")
|
@GetMapping("listtables")
|
||||||
public List<TableDTO> listTables() throws SearchException {
|
public List<TableDTO> listTables() throws SearchException {
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
return tableService.listTables(params);
|
return tableService.listTables(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@ApiOperation(value = "表详情", notes = "表详情接口")
|
||||||
* 表列,列表
|
@ApiImplicitParams({
|
||||||
*
|
@ApiImplicitParam(name = "tableName", value = "表名", paramType = "path")
|
||||||
* @param tableName
|
})
|
||||||
* @return
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
*/
|
|
||||||
@GetMapping("listtablecolumns/{tableName}")
|
@GetMapping("listtablecolumns/{tableName}")
|
||||||
public List<TableColumnDTO> listTableColumns(@PathVariable("tableName") String tableName) throws SearchException {
|
public List<TableColumnDTO> listTableColumns(@PathVariable("tableName") String tableName) throws SearchException {
|
||||||
Map<String, Object> params = requestParams();
|
Map<String, Object> params = requestParams();
|
||||||
|
@ -3,7 +3,7 @@ package com.cm.common.plugin.dao.database.table;
|
|||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
||||||
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
||||||
import org.springframework.stereotype.Repository;
|
import com.cm.common.plugin.pojo.vos.database.table.TableOldColumnVO;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -31,6 +31,45 @@ public interface ITableDao {
|
|||||||
*/
|
*/
|
||||||
void saveTable(Connection connection, String databaseName, String tableName, List<TableColumnVO> tableColumns);
|
void saveTable(Connection connection, String databaseName, String tableName, List<TableColumnVO> tableColumns);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删表
|
||||||
|
*
|
||||||
|
* @param connection
|
||||||
|
* @param databaseName
|
||||||
|
* @param tableName
|
||||||
|
*/
|
||||||
|
void removeTable(Connection connection, String databaseName, String tableName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加列
|
||||||
|
*
|
||||||
|
* @param connection
|
||||||
|
* @param databaseName
|
||||||
|
* @param tableName
|
||||||
|
* @param tableColumnVO
|
||||||
|
*/
|
||||||
|
void saveTableColumn(Connection connection, String databaseName, String tableName, TableColumnVO tableColumnVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改列
|
||||||
|
*
|
||||||
|
* @param connection
|
||||||
|
* @param databaseName
|
||||||
|
* @param tableName
|
||||||
|
* @param tableOldColumnVO
|
||||||
|
*/
|
||||||
|
void updateTableColumn(Connection connection, String databaseName, String tableName, TableOldColumnVO tableOldColumnVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改列属性
|
||||||
|
*
|
||||||
|
* @param connection
|
||||||
|
* @param databaseName
|
||||||
|
* @param tableName
|
||||||
|
* @param tableColumnVO
|
||||||
|
*/
|
||||||
|
void updateTableColumnType(Connection connection, String databaseName, String tableName, TableColumnVO tableColumnVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表列列表
|
* 表列列表
|
||||||
*
|
*
|
||||||
|
@ -2,27 +2,28 @@ package com.cm.common.plugin.dao.database.table.impl;
|
|||||||
|
|
||||||
import com.cm.common.exception.SaveException;
|
import com.cm.common.exception.SaveException;
|
||||||
import com.cm.common.exception.SearchException;
|
import com.cm.common.exception.SearchException;
|
||||||
|
import com.cm.common.exception.UpdateException;
|
||||||
import com.cm.common.plugin.dao.database.table.ITableDao;
|
import com.cm.common.plugin.dao.database.table.ITableDao;
|
||||||
|
import com.cm.common.plugin.enums.database.table.ColumnDataTypeEnum;
|
||||||
|
import com.cm.common.plugin.enums.database.table.ColumnIsNullableEnum;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
||||||
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
||||||
import com.cm.common.plugin.service.database.IDatabaseService;
|
import com.cm.common.plugin.pojo.vos.database.table.TableOldColumnVO;
|
||||||
import com.cm.common.utils.HashMapUtil;
|
import com.cm.common.utils.HashMapUtil;
|
||||||
import com.cm.common.utils.WStringUtil;
|
import com.cm.common.utils.WStringUtil;
|
||||||
import com.cm.common.utils.jdbc.JdbcUtil;
|
import com.cm.common.utils.jdbc.JdbcUtil;
|
||||||
import jdk.nashorn.internal.runtime.regexp.joni.Regex;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When you feel like quitting. Think about why you started
|
* When you feel like quitting. Think about why you started
|
||||||
@ -34,6 +35,7 @@ import java.util.regex.Pattern;
|
|||||||
* @Date: 2019/11/15 15:39
|
* @Date: 2019/11/15 15:39
|
||||||
* @Version: 1.0
|
* @Version: 1.0
|
||||||
**/
|
**/
|
||||||
|
@Primary
|
||||||
@Repository
|
@Repository
|
||||||
public class TableDaoImpl implements ITableDao {
|
public class TableDaoImpl implements ITableDao {
|
||||||
|
|
||||||
@ -41,26 +43,88 @@ public class TableDaoImpl implements ITableDao {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveTable(Connection connection, String databaseName, String tableName, List<TableColumnVO> tableColumns) {
|
public void saveTable(Connection connection, String databaseName, String tableName, List<TableColumnVO> tableColumns) {
|
||||||
// try {
|
try {
|
||||||
// String sql = "";
|
connection.setAutoCommit(false);
|
||||||
// } catch (SQLException e) {
|
String sql = getSaveTableSQL(databaseName, tableName, tableColumns);
|
||||||
// LOG.error(e.getMessage(), e);
|
LOG.debug("sql: {}", sql);
|
||||||
// throw new SaveException("建表失败");
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
||||||
// }
|
preparedStatement.execute();
|
||||||
|
connection.commit();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
LOG.error(e.getMessage(), e);
|
||||||
|
try {
|
||||||
|
connection.rollback();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
LOG.error(ex.getMessage(), ex);
|
||||||
|
}
|
||||||
|
throw new SaveException("建表失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getSaveTableSQL(String databaseName, String tableName, List<TableColumnVO> tableColumns) {
|
@Override
|
||||||
StringBuilder sql = new StringBuilder("CREATE TABLE `").append(databaseName).append("`.`").append(tableName).append("`");
|
public void removeTable(Connection connection, String databaseName, String tableName) {
|
||||||
for (TableColumnVO tableColumnVO : tableColumns) {
|
try {
|
||||||
|
connection.setAutoCommit(true);
|
||||||
|
String sql = String.format("DROP TABLE IF EXISTS `%s`.`%s`", databaseName, tableName);
|
||||||
|
LOG.debug("sql: {}", sql);
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
||||||
|
preparedStatement.execute();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
LOG.error(e.getMessage(), e);
|
||||||
|
throw new SaveException("删表失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveTableColumn(Connection connection, String databaseName, String tableName, TableColumnVO tableColumnVO) {
|
||||||
|
try {
|
||||||
|
connection.setAutoCommit(true);
|
||||||
|
StringBuilder sqlSB = new StringBuilder(String.format("ALTER TABLE `%s`.`%s` ADD COLUMN ", databaseName, tableName));
|
||||||
|
sqlSB.append(getSaveColumnSql(tableColumnVO));
|
||||||
|
LOG.debug("sql: {}", sqlSB.toString());
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement(sqlSB.toString());
|
||||||
|
preparedStatement.execute();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
LOG.error(e.getMessage(), e);
|
||||||
|
throw new SaveException("新增列失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateTableColumn(Connection connection, String databaseName, String tableName, TableOldColumnVO tableOldColumnVO) {
|
||||||
|
try {
|
||||||
|
connection.setAutoCommit(true);
|
||||||
|
StringBuilder sqlSB = new StringBuilder(String.format("ALTER TABLE `%s`.`%s` CHANGE %s ", databaseName, tableName, WStringUtil.lowerUpper2UnderLine(tableOldColumnVO.getOldColumnName())));
|
||||||
|
sqlSB.append(getSaveColumnSql(tableOldColumnVO));
|
||||||
|
LOG.debug("sql: {}", sqlSB.toString());
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement(sqlSB.toString());
|
||||||
|
preparedStatement.execute();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
LOG.error(e.getMessage(), e);
|
||||||
|
throw new UpdateException("修改列属性失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateTableColumnType(Connection connection, String databaseName, String tableName, TableColumnVO tableColumnVO) {
|
||||||
|
try {
|
||||||
|
connection.setAutoCommit(true);
|
||||||
|
StringBuilder sqlSB = new StringBuilder(String.format("ALTER TABLE `%s`.`%s` MODIFY ", databaseName, tableName));
|
||||||
|
sqlSB.append(getSaveColumnSql(tableColumnVO));
|
||||||
|
LOG.debug("sql: {}", sqlSB.toString());
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement(sqlSB.toString());
|
||||||
|
preparedStatement.execute();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
LOG.error(e.getMessage(), e);
|
||||||
|
throw new UpdateException("修改列属性失败");
|
||||||
}
|
}
|
||||||
return sql.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TableColumnDTO> listTableColumns(Connection connection, Map<String, Object> params) {
|
public List<TableColumnDTO> listTableColumns(Connection connection, Map<String, Object> params) {
|
||||||
try {
|
try {
|
||||||
String sql = "SELECT COLUMN_NAME columnName,COLUMN_DEFAULT columnDefault,IS_NULLABLE isNullable,DATA_TYPE dataType,CHARACTER_MAXIMUM_LENGTH characterMaximumLength,NUMERIC_PRECISION numericPrecision,NUMERIC_SCALE numericScale,DATETIME_PRECISION datetimePrecision,COLUMN_TYPE columnType,COLUMN_KEY columnKey,COLUMN_COMMENT columnComment,EXTRA extra FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA`= ? AND `TABLE_NAME`= ?";
|
String sql = "SELECT COLUMN_NAME columnName,COLUMN_DEFAULT columnDefault,IS_NULLABLE isNullable,DATA_TYPE dataType,CHARACTER_MAXIMUM_LENGTH characterMaximumLength,NUMERIC_PRECISION numericPrecision,NUMERIC_SCALE numericScale,DATETIME_PRECISION datetimePrecision,COLUMN_TYPE columnType,COLUMN_KEY columnKey,COLUMN_COMMENT columnComment,EXTRA extra FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA`= ? AND `TABLE_NAME`= ?";
|
||||||
|
LOG.debug("sql: {}", sql);
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
||||||
preparedStatement.setString(1, params.get("databaseName").toString());
|
preparedStatement.setString(1, params.get("databaseName").toString());
|
||||||
preparedStatement.setString(2, params.get("tableName").toString());
|
preparedStatement.setString(2, params.get("tableName").toString());
|
||||||
@ -76,6 +140,7 @@ public class TableDaoImpl implements ITableDao {
|
|||||||
public List<TableDTO> listTables(Connection connection, Map<String, Object> params) {
|
public List<TableDTO> listTables(Connection connection, Map<String, Object> params) {
|
||||||
try {
|
try {
|
||||||
String sql = "SELECT TABLE_SCHEMA tableSchema, TABLE_NAME tableName FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = ?";
|
String sql = "SELECT TABLE_SCHEMA tableSchema, TABLE_NAME tableName FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = ?";
|
||||||
|
LOG.debug("sql: {}", sql);
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
||||||
preparedStatement.setString(1, params.get("databaseName").toString());
|
preparedStatement.setString(1, params.get("databaseName").toString());
|
||||||
preparedStatement.execute();
|
preparedStatement.execute();
|
||||||
@ -90,6 +155,7 @@ public class TableDaoImpl implements ITableDao {
|
|||||||
public TableDTO getTableByTableName(Connection connection, String databaseName, String tableName) {
|
public TableDTO getTableByTableName(Connection connection, String databaseName, String tableName) {
|
||||||
try {
|
try {
|
||||||
String sql = "SELECT TABLE_SCHEMA tableSchema, TABLE_NAME tableName FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ?";
|
String sql = "SELECT TABLE_SCHEMA tableSchema, TABLE_NAME tableName FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ?";
|
||||||
|
LOG.debug("sql: {}", sql);
|
||||||
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
||||||
preparedStatement.setString(1, databaseName);
|
preparedStatement.setString(1, databaseName);
|
||||||
preparedStatement.setString(2, tableName);
|
preparedStatement.setString(2, tableName);
|
||||||
@ -105,4 +171,63 @@ public class TableDaoImpl implements ITableDao {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取建表SQL语句
|
||||||
|
*
|
||||||
|
* @param databaseName
|
||||||
|
* @param tableName
|
||||||
|
* @param tableColumns
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private String getSaveTableSQL(String databaseName, String tableName, List<TableColumnVO> tableColumns) {
|
||||||
|
String underLineTableName = WStringUtil.lowerUpper2UnderLine(tableName);
|
||||||
|
StringBuilder sql = new StringBuilder("CREATE TABLE `").append(databaseName).append("`.`").append(tableName).append("`(");
|
||||||
|
sql.append("`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',");
|
||||||
|
sql.append(String.format("`%s_id` CHAR(36) NOT NULL COMMENT '主键',", underLineTableName));
|
||||||
|
for (TableColumnVO tableColumn : tableColumns) {
|
||||||
|
sql.append(getSaveColumnSql(tableColumn)).append(",");
|
||||||
|
}
|
||||||
|
sql.append("`creator` CHAR(36) DEFAULT NULL,");
|
||||||
|
sql.append("`gmt_create` datetime DEFAULT NULL,");
|
||||||
|
sql.append("`modifier` CHAR(36) DEFAULT NULL,");
|
||||||
|
sql.append("`gmt_modified` datetime DEFAULT NULL,");
|
||||||
|
sql.append("`is_delete` int(1) DEFAULT '0',");
|
||||||
|
sql.append(String.format("PRIMARY KEY (`id`, `%s_id`)", underLineTableName));
|
||||||
|
sql.append(") ENGINE=InnoDB DEFAULT CHARSET=utf8;");
|
||||||
|
return sql.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增列的SQL
|
||||||
|
*
|
||||||
|
* @param tableColumn
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private String getSaveColumnSql(TableColumnVO tableColumn) {
|
||||||
|
boolean notNull = true;
|
||||||
|
StringBuilder columnSql = new StringBuilder();
|
||||||
|
if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.VARCHAR.getDataType())) {
|
||||||
|
columnSql.append(String.format("`%s` VARCHAR(%d)", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
||||||
|
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.INT.getDataType())) {
|
||||||
|
columnSql.append(String.format("`%s` INT(%d)", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
||||||
|
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.DOUBLE.getDataType())) {
|
||||||
|
columnSql.append(String.format("`%s` DOUBLE(%d)", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
||||||
|
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.BIGINT.getDataType())) {
|
||||||
|
columnSql.append(String.format("`%s` BIGINT(%d)", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
||||||
|
} else if (StringUtils.equals(tableColumn.getDataType(), ColumnDataTypeEnum.RICH_TEXT.getDataType())) {
|
||||||
|
columnSql.append(String.format("`%s` LONGTEXT DEFAULT NULL", WStringUtil.lowerUpper2UnderLine(tableColumn.getColumnName()), tableColumn.getColumnLength()));
|
||||||
|
notNull = false;
|
||||||
|
}
|
||||||
|
if (notNull && StringUtils.equals(tableColumn.getIsNullable(), ColumnIsNullableEnum.YES.getIsNullable())) {
|
||||||
|
columnSql.append(" NOT NULL");
|
||||||
|
}
|
||||||
|
if (!StringUtils.isEmpty(tableColumn.getColumnDefault())) {
|
||||||
|
columnSql.append(String.format(" DEFAULT '%s'", tableColumn.getColumnDefault()));
|
||||||
|
}
|
||||||
|
if (!StringUtils.isEmpty(tableColumn.getColumnComment())) {
|
||||||
|
columnSql.append(String.format(" COMMENT '%s'", tableColumn.getColumnComment()));
|
||||||
|
}
|
||||||
|
return columnSql.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,45 @@
|
|||||||
|
package com.cm.common.plugin.enums.database.table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: DataTypeEnum
|
||||||
|
* @Description: 数据类型
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/11/15 8:20 下午
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
public enum ColumnDataTypeEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 整形
|
||||||
|
*/
|
||||||
|
INT("int"),
|
||||||
|
/**
|
||||||
|
* 长整形
|
||||||
|
*/
|
||||||
|
BIGINT("bigint"),
|
||||||
|
/**
|
||||||
|
* 双精度
|
||||||
|
*/
|
||||||
|
DOUBLE("double"),
|
||||||
|
/**
|
||||||
|
* 字符串
|
||||||
|
*/
|
||||||
|
VARCHAR("varchar"),
|
||||||
|
/**
|
||||||
|
* 富文本
|
||||||
|
*/
|
||||||
|
RICH_TEXT("richText");
|
||||||
|
|
||||||
|
private String dataType;
|
||||||
|
|
||||||
|
ColumnDataTypeEnum(String dataType) {
|
||||||
|
this.dataType = dataType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDataType() {
|
||||||
|
return dataType == null ? "" : dataType.trim();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.cm.common.plugin.enums.database.table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: ColumnIsNullable
|
||||||
|
* @Description: 可为空
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/11/15 9:28 下午
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
public enum ColumnIsNullableEnum {
|
||||||
|
|
||||||
|
YES("YES"),
|
||||||
|
NO("NO");
|
||||||
|
|
||||||
|
String isNullable;
|
||||||
|
|
||||||
|
ColumnIsNullableEnum(String isNullable) {
|
||||||
|
this.isNullable = isNullable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIsNullable() {
|
||||||
|
return isNullable == null ? "" : isNullable.trim();
|
||||||
|
}
|
||||||
|
}
|
@ -1,16 +1,20 @@
|
|||||||
package com.cm.common.plugin.pojo.vos.database.table;
|
package com.cm.common.plugin.pojo.vos.database.table;
|
||||||
|
|
||||||
import com.cm.common.annotation.CheckBooleanAnnotation;
|
import com.cm.common.annotation.CheckBooleanAnnotation;
|
||||||
|
import com.cm.common.annotation.CheckEmptyAnnotation;
|
||||||
import com.cm.common.annotation.CheckNullAnnotation;
|
import com.cm.common.annotation.CheckNullAnnotation;
|
||||||
import com.cm.common.annotation.CheckNumberAnnotation;
|
import com.cm.common.annotation.CheckNumberAnnotation;
|
||||||
|
import com.cm.common.plugin.enums.database.table.ColumnDataTypeEnum;
|
||||||
|
import com.cm.common.plugin.enums.database.table.ColumnIsNullableEnum;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When you feel like quitting. Think about why you started
|
* When you feel like quitting. Think about why you started
|
||||||
* 当你想要放弃的时候,想想当初你为何开始
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
*
|
*
|
||||||
* @ClassName: TableColumnVO
|
* @ClassName: TableColumnVO
|
||||||
* @Description: //TODO
|
* @Description: 表列表
|
||||||
* @Author: WangGeng
|
* @Author: WangGeng
|
||||||
* @Date: 2019/11/15 14:47
|
* @Date: 2019/11/15 14:47
|
||||||
* @Version: 1.0
|
* @Version: 1.0
|
||||||
@ -18,94 +22,104 @@ import io.swagger.annotations.ApiModel;
|
|||||||
@ApiModel
|
@ApiModel
|
||||||
public class TableColumnVO {
|
public class TableColumnVO {
|
||||||
|
|
||||||
@CheckNullAnnotation(name = "字段名称")
|
@ApiModelProperty(name = "columnName", value = "字段名称")
|
||||||
private String fieldName;
|
@CheckEmptyAnnotation(name = "字段名称")
|
||||||
@CheckNullAnnotation(name = "字段说明")
|
private String columnName;
|
||||||
private String fieldComment;
|
|
||||||
@CheckNullAnnotation(name = "字段类型")
|
|
||||||
private String fieldType;
|
|
||||||
@CheckNumberAnnotation(name = "字段长度")
|
|
||||||
private Integer fieldLength;
|
|
||||||
@CheckNumberAnnotation(name = "字段小数点长度")
|
|
||||||
private Integer fieldFloatLength;
|
|
||||||
@CheckBooleanAnnotation(name = "是否为空")
|
|
||||||
private Boolean isNull;
|
|
||||||
@CheckNullAnnotation(name = "默认值")
|
|
||||||
private String defaultValue;
|
|
||||||
|
|
||||||
public String getFieldName() {
|
@ApiModelProperty(name = "columnDefault", value = "默认值")
|
||||||
return fieldName;
|
private String columnDefault;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "isNullable", value = "可空")
|
||||||
|
@CheckEmptyAnnotation(name = "可空", types = {"YES", "NO"})
|
||||||
|
private String isNullable;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "dataType", value = "类型")
|
||||||
|
@CheckEmptyAnnotation(name = "类型", types = {"int", "double", "bigint", "varchar", "richText"})
|
||||||
|
private String dataType;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "columnLength", value = "长度")
|
||||||
|
@CheckNumberAnnotation(name = "长度")
|
||||||
|
private Integer columnLength;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "columnFloatLength", value = "小数点")
|
||||||
|
private Integer columnFloatLength;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "columnComment", value = "字段注释")
|
||||||
|
private String columnComment;
|
||||||
|
|
||||||
|
public String getColumnName() {
|
||||||
|
return columnName == null ? "" : columnName.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFieldName(String fieldName) {
|
public void setColumnName(String columnName) {
|
||||||
this.fieldName = fieldName;
|
this.columnName = columnName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFieldComment() {
|
public String getColumnDefault() {
|
||||||
return fieldComment;
|
return columnDefault == null ? "" : columnDefault.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFieldComment(String fieldComment) {
|
public void setColumnDefault(String columnDefault) {
|
||||||
this.fieldComment = fieldComment;
|
this.columnDefault = columnDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFieldType() {
|
public String getIsNullable() {
|
||||||
return fieldType;
|
return isNullable == null ? "" : isNullable.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFieldType(String fieldType) {
|
public void setIsNullable(String isNullable) {
|
||||||
this.fieldType = fieldType;
|
this.isNullable = isNullable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getFieldLength() {
|
public String getDataType() {
|
||||||
return fieldLength;
|
return dataType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFieldLength(Integer fieldLength) {
|
public void setDataType(String dataType) {
|
||||||
this.fieldLength = fieldLength;
|
this.dataType = dataType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getFieldFloatLength() {
|
public Integer getColumnLength() {
|
||||||
return fieldFloatLength;
|
return columnLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFieldFloatLength(Integer fieldFloatLength) {
|
public void setColumnLength(Integer columnLength) {
|
||||||
this.fieldFloatLength = fieldFloatLength;
|
this.columnLength = columnLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getNull() {
|
public Integer getColumnFloatLength() {
|
||||||
return isNull;
|
return columnFloatLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNull(Boolean aNull) {
|
public void setColumnFloatLength(Integer columnFloatLength) {
|
||||||
isNull = aNull;
|
this.columnFloatLength = columnFloatLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDefaultValue() {
|
public String getColumnComment() {
|
||||||
return defaultValue;
|
return columnComment == null ? "" : columnComment.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDefaultValue(String defaultValue) {
|
public void setColumnComment(String columnComment) {
|
||||||
this.defaultValue = defaultValue;
|
this.columnComment = columnComment;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder sb = new StringBuilder("{");
|
final StringBuilder sb = new StringBuilder("{");
|
||||||
sb.append("\"fieldName\":\"")
|
sb.append("\"columnName\":")
|
||||||
.append(fieldName).append('\"');
|
.append("\"").append(columnName).append("\"");
|
||||||
sb.append(",\"fieldComment\":\"")
|
sb.append(",\"columnDefault\":")
|
||||||
.append(fieldComment).append('\"');
|
.append("\"").append(columnDefault).append("\"");
|
||||||
sb.append(",\"fieldType\":\"")
|
sb.append(",\"isNullable\":")
|
||||||
.append(fieldType).append('\"');
|
.append("\"").append(isNullable).append("\"");
|
||||||
sb.append(",\"fieldLength\":")
|
sb.append(",\"dataType\":")
|
||||||
.append(fieldLength);
|
.append(dataType);
|
||||||
sb.append(",\"fieldFloatLength\":")
|
sb.append(",\"columnLength\":")
|
||||||
.append(fieldFloatLength);
|
.append(columnLength);
|
||||||
sb.append(",\"isNull\":")
|
sb.append(",\"columnFloatLength\":")
|
||||||
.append(isNull);
|
.append(columnFloatLength);
|
||||||
sb.append(",\"defaultValue\":\"")
|
sb.append(",\"columnComment\":")
|
||||||
.append(defaultValue).append('\"');
|
.append("\"").append(columnComment).append("\"");
|
||||||
sb.append('}');
|
sb.append('}');
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.cm.common.plugin.pojo.vos.database.table;
|
||||||
|
|
||||||
|
import com.cm.common.annotation.CheckEmptyAnnotation;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When you feel like quitting. Think about why you started
|
||||||
|
* 当你想要放弃的时候,想想当初你为何开始
|
||||||
|
*
|
||||||
|
* @ClassName: TableNewColumnVO
|
||||||
|
* @Description: 新表列
|
||||||
|
* @Author: WangGeng
|
||||||
|
* @Date: 2019/11/16 1:55 下午
|
||||||
|
* @Version: 1.0
|
||||||
|
**/
|
||||||
|
@ApiModel
|
||||||
|
public class TableOldColumnVO extends TableColumnVO {
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "oldColumnName", value = "旧字段名称")
|
||||||
|
@CheckEmptyAnnotation(name = "旧字段名称")
|
||||||
|
private String oldColumnName;
|
||||||
|
|
||||||
|
public String getOldColumnName() {
|
||||||
|
return oldColumnName == null ? "" : oldColumnName.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOldColumnName(String oldColumnName) {
|
||||||
|
this.oldColumnName = oldColumnName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
final StringBuilder sb = new StringBuilder("{");
|
||||||
|
sb.append("\"oldColumnName\":")
|
||||||
|
.append("\"").append(oldColumnName).append("\"");
|
||||||
|
sb.append('}');
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,13 @@
|
|||||||
package com.cm.common.plugin.service.database.table;
|
package com.cm.common.plugin.service.database.table;
|
||||||
|
|
||||||
|
import com.cm.common.exception.RemoveException;
|
||||||
import com.cm.common.exception.SaveException;
|
import com.cm.common.exception.SaveException;
|
||||||
import com.cm.common.exception.SearchException;
|
import com.cm.common.exception.SearchException;
|
||||||
|
import com.cm.common.exception.UpdateException;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
||||||
|
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
||||||
|
import com.cm.common.plugin.pojo.vos.database.table.TableOldColumnVO;
|
||||||
import com.cm.common.plugin.pojo.vos.database.table.TableVO;
|
import com.cm.common.plugin.pojo.vos.database.table.TableVO;
|
||||||
import com.cm.common.result.SuccessResult;
|
import com.cm.common.result.SuccessResult;
|
||||||
|
|
||||||
@ -32,6 +36,45 @@ public interface ITableService {
|
|||||||
*/
|
*/
|
||||||
SuccessResult saveTable(TableVO tableVO) throws SearchException, SaveException;
|
SuccessResult saveTable(TableVO tableVO) throws SearchException, SaveException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删表
|
||||||
|
*
|
||||||
|
* @param tableName
|
||||||
|
* @return
|
||||||
|
* @throws RemoveException
|
||||||
|
*/
|
||||||
|
SuccessResult removeTable(String tableName) throws RemoveException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加列
|
||||||
|
*
|
||||||
|
* @param tableName
|
||||||
|
* @param tableColumnVO
|
||||||
|
* @return
|
||||||
|
* @throws SaveException
|
||||||
|
*/
|
||||||
|
SuccessResult saveTableColumn(String tableName, TableColumnVO tableColumnVO) throws SaveException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改列
|
||||||
|
*
|
||||||
|
* @param tableName
|
||||||
|
* @param tableOldColumnVO
|
||||||
|
* @return
|
||||||
|
* @throws UpdateException
|
||||||
|
*/
|
||||||
|
SuccessResult updateTableColumn(String tableName, TableOldColumnVO tableOldColumnVO) throws UpdateException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改表列类型
|
||||||
|
*
|
||||||
|
* @param tableName
|
||||||
|
* @param tableColumnVO
|
||||||
|
* @return
|
||||||
|
* @throws UpdateException
|
||||||
|
*/
|
||||||
|
SuccessResult updateTableColumnType(String tableName, TableColumnVO tableColumnVO) throws UpdateException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过表名获取表
|
* 通过表名获取表
|
||||||
*
|
*
|
||||||
@ -51,7 +94,7 @@ public interface ITableService {
|
|||||||
List<TableDTO> listTables(Map<String, Object> params) throws SearchException;
|
List<TableDTO> listTables(Map<String, Object> params) throws SearchException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表列,列表
|
* 表详情
|
||||||
*
|
*
|
||||||
* @param params
|
* @param params
|
||||||
* @return
|
* @return
|
||||||
@ -59,5 +102,4 @@ public interface ITableService {
|
|||||||
*/
|
*/
|
||||||
List<TableColumnDTO> listTableColumns(Map<String, Object> params) throws SearchException;
|
List<TableColumnDTO> listTableColumns(Map<String, Object> params) throws SearchException;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
package com.cm.common.plugin.service.database.table.impl;
|
package com.cm.common.plugin.service.database.table.impl;
|
||||||
|
|
||||||
import com.cm.common.base.AbstractService;
|
import com.cm.common.base.AbstractService;
|
||||||
|
import com.cm.common.exception.RemoveException;
|
||||||
import com.cm.common.exception.SaveException;
|
import com.cm.common.exception.SaveException;
|
||||||
import com.cm.common.exception.SearchException;
|
import com.cm.common.exception.SearchException;
|
||||||
|
import com.cm.common.exception.UpdateException;
|
||||||
import com.cm.common.plugin.dao.database.table.ITableDao;
|
import com.cm.common.plugin.dao.database.table.ITableDao;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableColumnDTO;
|
||||||
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
import com.cm.common.plugin.pojo.dtos.database.table.TableDTO;
|
||||||
|
import com.cm.common.plugin.pojo.vos.database.table.TableColumnVO;
|
||||||
|
import com.cm.common.plugin.pojo.vos.database.table.TableOldColumnVO;
|
||||||
import com.cm.common.plugin.pojo.vos.database.table.TableVO;
|
import com.cm.common.plugin.pojo.vos.database.table.TableVO;
|
||||||
import com.cm.common.plugin.service.database.IDatabaseService;
|
import com.cm.common.plugin.service.database.IDatabaseService;
|
||||||
import com.cm.common.plugin.service.database.table.ITableService;
|
import com.cm.common.plugin.service.database.table.ITableService;
|
||||||
import com.cm.common.result.SuccessResult;
|
import com.cm.common.result.SuccessResult;
|
||||||
import com.cm.common.utils.HashMapUtil;
|
|
||||||
import com.cm.common.utils.jdbc.JdbcUtil;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -40,36 +40,51 @@ public class TableServiceImpl extends AbstractService implements ITableService {
|
|||||||
@Override
|
@Override
|
||||||
public synchronized SuccessResult saveTable(TableVO tableVO) throws SearchException, SaveException {
|
public synchronized SuccessResult saveTable(TableVO tableVO) throws SearchException, SaveException {
|
||||||
Connection connection = getConnectionFromSession();
|
Connection connection = getConnectionFromSession();
|
||||||
if (connection == null) {
|
|
||||||
throw new SearchException("数据库连接无效");
|
|
||||||
}
|
|
||||||
String databaseName = getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString();
|
String databaseName = getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString();
|
||||||
String tableName = tableVO.getTableName();
|
String tableName = tableVO.getTableName();
|
||||||
TableDTO tableDTO = getTableByTableName(tableName);
|
TableDTO tableDTO = getTableByTableName(tableName);
|
||||||
if (tableDTO != null) {
|
if (tableDTO != null) {
|
||||||
throw new SaveException("表已存在");
|
throw new SaveException("表已存在");
|
||||||
}
|
}
|
||||||
try {
|
tableDao.saveTable(connection, databaseName, tableName, tableVO.getTableColumns());
|
||||||
connection.setAutoCommit(false);
|
|
||||||
tableDao.saveTable(connection, databaseName, tableName, tableVO.getTableColumns());
|
|
||||||
connection.commit();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
LOG.error(e.getMessage(), e);
|
|
||||||
try {
|
|
||||||
connection.rollback();
|
|
||||||
} catch (SQLException ex) {
|
|
||||||
LOG.error(ex.getMessage(), ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new SuccessResult();
|
return new SuccessResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TableDTO getTableByTableName(String tableName) {
|
public SuccessResult removeTable(String tableName) throws RemoveException {
|
||||||
|
Connection connection = getConnectionFromSession();
|
||||||
|
String databaseName = getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString();
|
||||||
|
tableDao.removeTable(connection, databaseName, tableName);
|
||||||
|
return new SuccessResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SuccessResult saveTableColumn(String tableName, TableColumnVO tableColumnVO) throws SaveException {
|
||||||
|
Connection connection = getConnectionFromSession();
|
||||||
|
String databaseName = getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString();
|
||||||
|
tableDao.saveTableColumn(connection, databaseName, tableName, tableColumnVO);
|
||||||
|
return new SuccessResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SuccessResult updateTableColumn(String tableName, TableOldColumnVO tableOldColumnVO) throws UpdateException {
|
||||||
|
Connection connection = getConnectionFromSession();
|
||||||
|
String databaseName = getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString();
|
||||||
|
tableDao.updateTableColumn(connection, databaseName, tableName, tableOldColumnVO);
|
||||||
|
return new SuccessResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SuccessResult updateTableColumnType(String tableName, TableColumnVO tableColumnVO) throws UpdateException {
|
||||||
|
Connection connection = getConnectionFromSession();
|
||||||
|
String databaseName = getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString();
|
||||||
|
tableDao.updateTableColumnType(connection, databaseName, tableName, tableColumnVO);
|
||||||
|
return new SuccessResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableDTO getTableByTableName(String tableName) throws SearchException {
|
||||||
Connection connection = getConnectionFromSession();
|
Connection connection = getConnectionFromSession();
|
||||||
if (connection == null) {
|
|
||||||
throw new SearchException("数据库连接无效");
|
|
||||||
}
|
|
||||||
String databaseName = getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString();
|
String databaseName = getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString();
|
||||||
return tableDao.getTableByTableName(connection, databaseName, tableName);
|
return tableDao.getTableByTableName(connection, databaseName, tableName);
|
||||||
}
|
}
|
||||||
@ -77,19 +92,13 @@ public class TableServiceImpl extends AbstractService implements ITableService {
|
|||||||
@Override
|
@Override
|
||||||
public List<TableDTO> listTables(Map<String, Object> params) throws SearchException {
|
public List<TableDTO> listTables(Map<String, Object> params) throws SearchException {
|
||||||
Connection connection = getConnectionFromSession();
|
Connection connection = getConnectionFromSession();
|
||||||
if (connection == null) {
|
|
||||||
throw new SearchException("数据库连接无效");
|
|
||||||
}
|
|
||||||
params.put("databaseName", getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString());
|
params.put("databaseName", getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString());
|
||||||
return tableDao.listTables(connection, params);
|
return tableDao.listTables(connection, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TableColumnDTO> listTableColumns(Map<String, Object> params) {
|
public List<TableColumnDTO> listTableColumns(Map<String, Object> params) throws SearchException {
|
||||||
Connection connection = getConnectionFromSession();
|
Connection connection = getConnectionFromSession();
|
||||||
if (connection == null) {
|
|
||||||
throw new SearchException("数据库连接无效");
|
|
||||||
}
|
|
||||||
params.put("databaseName", getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString());
|
params.put("databaseName", getHttpSession().getAttribute(IDatabaseService.DATABASE_NAME).toString());
|
||||||
return tableDao.listTableColumns(connection, params);
|
return tableDao.listTableColumns(connection, params);
|
||||||
}
|
}
|
||||||
@ -100,6 +109,10 @@ public class TableServiceImpl extends AbstractService implements ITableService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private Connection getConnectionFromSession() {
|
private Connection getConnectionFromSession() {
|
||||||
return (Connection) getHttpSession().getAttribute(IDatabaseService.DATABASE_CONNECTION);
|
Object connectionObj = getHttpSession().getAttribute(IDatabaseService.DATABASE_CONNECTION);
|
||||||
|
if (connectionObj == null) {
|
||||||
|
throw new SearchException("数据库连接无效");
|
||||||
|
}
|
||||||
|
return (Connection) connectionObj;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user