xuezizhuo 2 жил өмнө
parent
commit
ae122f4379

+ 10 - 0
src/main/java/com/customer/controller/TableInfoController.java

@@ -85,5 +85,15 @@ public class TableInfoController {
         return AjaxResult.success(tableInfoService.mysqlTableFieldInfo(databaseName,tableName));
     }
 
+    @PutMapping("editMysqlTable")
+    public AjaxResult editMysqlTable(@RequestBody Map<String, Object> map){
+        String tableName = (String) map.get("tableName");
+        if(tableInfoService.selectDataCount(tableName)>0){
+            return AjaxResult.warn("表中有数据,不能修改!");
+        }
+        tableInfoService.updateMysqlTable(map);
+        return AjaxResult.success();
+
+    }
 
 }

+ 2 - 0
src/main/java/com/customer/mapper/TableInfoMapper.java

@@ -45,6 +45,8 @@ public interface TableInfoMapper {
      */
     void dropMysqlTable(String tableName);
 
+    void updateMysqlTable(@Param("dataBaseName") String dataBaseName,@Param("tableName") String tableName,@Param("filedList") List<String> filedList);
+
     /**
      * 获取表字段信息
      */

+ 5 - 0
src/main/java/com/customer/service/ITableInfoService.java

@@ -47,6 +47,11 @@ public interface ITableInfoService {
      */
     List<TableInfo> mysqlTableFieldInfo(String dataBaseName, String tableName);
 
+    /**
+     * 修改mysql数据表
+     */
+    void updateMysqlTable(Map<String,Object> map);
+
     //---------------------------------sqlServer------------------------------------------
 
     /**

+ 24 - 0
src/main/java/com/customer/service/impl/TableInfoServiceImpl.java

@@ -121,6 +121,30 @@ public class TableInfoServiceImpl implements ITableInfoService {
         return tableInfoMapper.mysqlTableFieldInfo(dataBaseName,tableName);
     }
 
+    @Override
+    public void updateMysqlTable(Map<String, Object> map) {
+        String dataBaseName = (String) map.get("dataBaseName");
+        String tableName = (String) map.get("tableName");
+        List<TableInfo> filedList = JSON.parseArray(JSON.toJSONString(map.get("field")), TableInfo.class);
+        List<String> list= filedList.stream().map(filed->{
+            StringBuilder stringBuilder = new StringBuilder();
+            stringBuilder.append(filed.getFieldName()+" ")
+                    .append(filed.getFieldType()+" ");
+            if(filed.getIsNull()){
+                stringBuilder.append("NOT NULL ");
+            }
+            if(filed.getIsPrimary()){
+                stringBuilder.append("PRIMARY KEY ");
+                if(filed.getIsAuto()){
+                    stringBuilder.append("AUTO_INCREMENT ");
+                }
+            }
+            stringBuilder.append("COMMENT '"+filed.getFieldDescription()+"'");
+            return stringBuilder.toString();
+        }).collect(Collectors.toList());
+        tableInfoMapper.updateMysqlTable(dataBaseName,tableName,list);
+    }
+
     @Override
     public int sqlServerTableExist(String dataBaseName,String tableName) {
         StringBuilder stringBuilder = new StringBuilder();

+ 11 - 2
src/main/resources/mapper/TableInfoMapper.xml

@@ -19,8 +19,7 @@
     <update id="createMysqlDataBase">
 
         CREATE database IF NOT EXISTS `${dataBaseName}`;
-        use `${dataBaseName}`;
-        CREATE TABLE IF NOT EXISTS `${tableName}`
+        CREATE TABLE IF NOT EXISTS `${dataBaseName}`.`${tableName}`
         (
         <foreach collection="filedList" item="filed" separator=",">
             ${filed}
@@ -54,6 +53,16 @@
         DROP TABLE IF EXISTS ${tableName};
     </delete>
 
+    <update id="updateMysqlTable">
+        DROP TABLE IF EXISTS ${dataBaseName}.${tableName};
+        CREATE TABLE IF NOT EXISTS `${dataBaseName}`.`${tableName}`
+        (
+        <foreach collection="filedList" item="filed" separator=",">
+            ${filed}
+        </foreach>
+        );
+    </update>
+
     <select id="mysqlTableFieldInfo" resultMap="mysqlTableInfoResult">
         SELECT
             column_name fieldName,