Forráskód Böngészése

sqlserver删除修改

xuezizhuo 2 éve
szülő
commit
ad279343d5

+ 44 - 1
src/main/java/com/customer/controller/TableInfoController.java

@@ -85,7 +85,7 @@ public class TableInfoController {
         return AjaxResult.success(tableInfoService.mysqlTableFieldInfo(databaseName,tableName));
     }
 
-    @PutMapping("editMysqlTable")
+    @PutMapping("/editMysqlTable")
     public AjaxResult editMysqlTable(@RequestBody Map<String, Object> map){
         String tableName = (String) map.get("tableName");
         if(tableInfoService.selectDataCount(tableName)>0){
@@ -96,4 +96,47 @@ public class TableInfoController {
 
     }
 
+    /**
+     * 获取sqlServer当前库中所有表信息
+     */
+    @GetMapping("/sqlServerTableInfoList")
+    public AjaxResult sqlServerTableInfoList(){
+        return AjaxResult.success(tableInfoService.sqlServerTableInfoList());
+    }
+
+    /**
+     * 删除sqlserver数据表
+     */
+    @DeleteMapping("/dropServerTable/{tableName}")
+    public AjaxResult dropServerTable(@PathVariable String tableName){
+        if(tableInfoService.selectSqlServerDataCount(tableName)>0){
+            return AjaxResult.warn("表中有数据,不能删除!");
+        }
+        tableInfoService.dropSqlserverTable(tableName);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 修改sqlserver数据表
+     */
+    @PutMapping("/editSqlserverTable")
+    public AjaxResult editSqlserverTable(@RequestBody Map<String, Object> map){
+        String tableName = (String) map.get("tableName");
+        if(tableInfoService.selectSqlServerDataCount(tableName)>0){
+            return AjaxResult.warn("表中有数据,不能修改!");
+        }
+        tableInfoService.updateSqlserverTable(map);
+        return AjaxResult.success();
+    }
+
+
+    /**
+     * 获取DM当前库中所有表信息
+     */
+    @GetMapping("/getDataBasesInfo")
+    public AjaxResult sqlServerTableInfoListtest(String name){
+        return AjaxResult.success(tableInfoService.getDataBasesInfo(name));
+    }
+
+
 }

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

@@ -6,6 +6,7 @@ import com.customer.vo.TableInfoVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 public interface TableInfoMapper {
 
@@ -45,6 +46,9 @@ public interface TableInfoMapper {
      */
     void dropMysqlTable(String tableName);
 
+    /**
+     * 修改mysql数据表
+     */
     void updateMysqlTable(@Param("dataBaseName") String dataBaseName,@Param("tableName") String tableName,@Param("filedList") List<String> filedList);
 
     /**
@@ -74,6 +78,26 @@ public interface TableInfoMapper {
      */
     int existOrNot(@Param("dataBaseName") String dataBaseName);
 
+    /**
+     * 获取当前库中所有表信息
+     */
+    List<TableInfoVO> sqlServerTableInfoList();
+
+    /**
+     * 查询表中是否有数据
+     */
+    int selectSqlServerDataCount(String tableName);
+
+    /**
+     * 删除当前库中表
+     */
+    void dropSqlserverTable(String tableName);
+
+    /**
+     * 修改sqlserver数据表
+     */
+    void updateSqlserverTable(@Param("tableName") String tableName,@Param("filedList") List<String> filedList,@Param("descriptionList") List<String> descriptionList);
+
     //---------------------------------DM------------------------------------------
 
     /**
@@ -106,6 +130,13 @@ public interface TableInfoMapper {
      */
     void addTableDescription(String description);
 
+    /**
+     * 根据数据库名称获取当前数据源所有表info
+     */
+    List<Map<String,Object>> getDataBasesInfo(@Param("DBname") String DBname);
+
+
+
     //---------------------------------oracle------------------------------------------
 
     /**
@@ -139,6 +170,4 @@ public interface TableInfoMapper {
 
 
 
-
-
 }

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

@@ -64,6 +64,31 @@ public interface ITableInfoService {
      */
     int sqlServerTableExist(String dataBaseName,String tableName);
 
+    /**
+     * 获取当前库中所有表信息
+     */
+    List<TableInfoVO> sqlServerTableInfoList();
+
+    /**
+     * 查询表中是否有数据
+     */
+    int selectSqlServerDataCount(String tableName);
+
+    /**
+     * 删除当前库中表
+     */
+    void dropSqlserverTable(String tableName);
+
+    /**
+     * 修改sqlserver数据表
+     */
+    void updateSqlserverTable(Map<String, Object> map);
+
+    /**
+     * 根据数据库名称获取当前数据源所有表info
+     */
+    List<Map<String,Object>> getDataBasesInfo(@Param("DBname") String DBname);
+
     //---------------------------------DM------------------------------------------
 
     /**

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

@@ -154,6 +154,62 @@ public class TableInfoServiceImpl implements ITableInfoService {
         return tableInfoMapper.sqlServerTableExist(stringBuilder.toString());
     }
 
+    @Override
+    public List<TableInfoVO> sqlServerTableInfoList() {
+        return tableInfoMapper.sqlServerTableInfoList();
+    }
+
+    @Override
+    public int selectSqlServerDataCount(String tableName) {
+        return tableInfoMapper.selectSqlServerDataCount(tableName);
+    }
+
+    @Override
+    public void dropSqlserverTable(String tableName) {
+        tableInfoMapper.dropSqlserverTable(tableName);
+    }
+
+    @Override
+    public void updateSqlserverTable(Map<String, Object> map) {
+        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("IDENTITY(1,1) ");
+                }
+            }
+            return stringBuilder.toString();
+        }).collect(Collectors.toList());
+
+        List<String> descriptionList = filedList.stream().map(filed ->{
+            StringBuilder stringBuilder = new StringBuilder();
+            if(StringUtils.hasLength(filed.getFieldDescription())){
+                stringBuilder.append("EXECUTE sp_addextendedproperty N'MS_Description',")
+                        .append("'"+filed.getFieldDescription()+"'")
+                        .append(", N'user', N'dbo', N'table', N")
+                        .append("'"+tableName+"'")
+                        .append(", N'column', N")
+                        .append("'"+filed.getFieldName()+"'");
+            }
+            return stringBuilder.toString();
+        }).collect(Collectors.toList());
+        tableInfoMapper.dropSqlserverTable(tableName);
+        tableInfoMapper.updateSqlserverTable(tableName,list,descriptionList);
+    }
+
+    @Override
+    public List<Map<String, Object>> getDataBasesInfo(String DBname) {
+        return tableInfoMapper.getDataBasesInfo(DBname);
+    }
+
     @Override
     public int dmTableExist(String dataBaseName, String tableName) {
         return tableInfoMapper.dmTableExist(dataBaseName,tableName);

+ 39 - 0
src/main/resources/mapper/TableInfoMapper.xml

@@ -109,6 +109,36 @@
         select count(1) From master.dbo.sysdatabases where name = #{dataBaseName}
     </select>
 
+    <select id="sqlServerTableInfoList" resultType="com.customer.vo.TableInfoVO">
+        select
+            a.name AS tableName,
+            a.create_date AS createTime,
+            CONVERT(NVARCHAR(100),isnull(g.[value],'')) AS tableComment
+        from
+            sys.tables a left join sys.extended_properties g
+                                   on (a.object_id = g.major_id AND g.minor_id = 0)
+    </select>
+
+    <select id="selectSqlServerDataCount" resultType="int">
+        select count(1) from ${tableName}
+    </select>
+
+    <delete id="dropSqlserverTable">
+        drop table ${tableName}
+    </delete>
+
+    <update id="updateSqlserverTable">
+        CREATE TABLE ${tableName}
+        (
+        <foreach collection="filedList" item="filed" separator=",">
+            ${filed}
+        </foreach>
+        );
+        <foreach collection="descriptionList" item="description" separator=";">
+            ${description}
+        </foreach>
+    </update>
+
 
     <select id="dmTableExist" resultType="int">
         select count(1) from dba_segments where dba_segments.OWNER=#{dataBaseName} and SEGMENT_NAME=#{tableName}
@@ -140,6 +170,13 @@
            ${description}
     </update>
 
+    <select id="getDataBasesInfo" resultType="java.util.HashMap">
+select * from dba_tables a LEFT OUTER JOIN  USER_TAB_COMMENTS b on a.table_name = b.table_name
+                                                            where a.owner=#{DBname}
+
+    </select>
+
+
     <update id="createOracleUser">
         CREATE USER ${username} IDENTIFIED BY ${password} DEFAULT TABLESPACE users QUOTA unlimited ON users
     </update>
@@ -165,4 +202,6 @@
         ${description}
     </update>
 
+
+
 </mapper>