Bläddra i källkod

达梦建库建表

xuezizhuo 2 år sedan
förälder
incheckning
acf2c0796f

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

@@ -50,6 +50,7 @@ public class TableInfoController {
         if(tableInfoService.dmTableExist(dataBaseName,tableName)>0){
             return AjaxResult.warn("当前数据库中表已存在");
         }
+        tableInfoService.createDmDataBase(map);
         return AjaxResult.success();
     }
 

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

@@ -45,6 +45,11 @@ public interface TableInfoMapper {
      */
     void createSqlServerTable(@Param("dataBaseName") String dataBaseName,@Param("tableName") String tableName,@Param("filedList") List<String> filedList,@Param("descriptionList") List<String> descriptionList);
 
+    /**
+     * 判断数据库是否存在
+     */
+    int existOrNot(@Param("dataBaseName") String dataBaseName);
+
     //---------------------------------DM------------------------------------------
 
     /**
@@ -52,13 +57,35 @@ public interface TableInfoMapper {
      */
     int dmTableExist(@Param("dataBaseName") String dataBaseName,@Param("tableName") String tableName);
 
+    /**
+     * 查询数据库是否存在
+     */
+    int dmDataBaseExist(String databaseName);
 
+    /**
+     * 创建数据库
+     */
+    void createDmDataBase(String databaseName);
 
+    /**
+     * 使用达梦数据库
+     */
+    void useDmDataBase(String databaseName);
 
     /**
-     * 判断数据库是否存在
+     * 创建数据表
      */
-    int existOrNot(@Param("dataBaseName") String dataBaseName);
+    void createDmTable(@Param("tableName") String tableName,@Param("filedList") List<String> filedList);
+
+    /**
+     * 添加表注释
+     */
+    void addTableDescription(String description);
+
+
+
+
+
 
 
 }

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

@@ -7,16 +7,13 @@ import java.util.Map;
 
 public interface ITableInfoService {
 
+    //---------------------------------mysql------------------------------------------
+
     /**
      * 创建mysql数据库和表
      */
     void createMysqlDataBase(Map<String,Object> map);
 
-    /**
-     * 创建salServer数据库和表
-     */
-    void createSqlServerDataBase(Map<String,Object> map) throws Exception;
-
     /**
      * 查询mysql数据库是否存在
      */
@@ -27,13 +24,30 @@ public interface ITableInfoService {
      */
     int mysqlTableExist(String dataBaseName,String tableName);
 
+    //---------------------------------sqlServer------------------------------------------
+
+    /**
+     * 创建salServer数据库和表
+     */
+    void createSqlServerDataBase(Map<String,Object> map);
+
     /**
      * 查询数据库表是否存在
      */
     int sqlServerTableExist(String dataBaseName,String tableName);
 
+    //---------------------------------DM------------------------------------------
+
     /**
      * 查询数据库表是否存在
      */
     int dmTableExist(String dataBaseName,String tableName);
+
+    /**
+     * 创建dm数据库和表
+     */
+    void createDmDataBase(Map<String,Object> map);
+
+
+
 }

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

@@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -109,4 +110,50 @@ public class TableInfoServiceImpl implements ITableInfoService {
     public int dmTableExist(String dataBaseName, String tableName) {
         return tableInfoMapper.dmTableExist(dataBaseName,tableName);
     }
+
+    @Override
+    public void createDmDataBase(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> descriptionList = new ArrayList<>();
+        List<String> list= filedList.stream().map(filed->{
+            StringBuilder stringBuilder = new StringBuilder();
+            stringBuilder.append(filed.getFieldName()+" ")
+                    .append(filed.getFieldType()+" ");
+            if(filed.getIsPrimary()){
+                if(filed.getIsAuto()){
+                    stringBuilder.append("IDENTITY(1,1) ");
+                }
+                stringBuilder.append("PRIMARY KEY ");
+            }
+            if(filed.getIsNull()){
+                stringBuilder.append("NOT NULL ");
+            }
+
+            if(StringUtils.hasLength(filed.getFieldDescription())){
+                StringBuilder builder = new StringBuilder();
+                builder.append("COMMENT ON COLUMN \"")
+                        .append(dataBaseName)
+                        .append("\".\"")
+                        .append(tableName)
+                        .append("\".\"")
+                        .append(filed.getFieldName()+"\" IS ")
+                        .append("'"+filed.getFieldDescription()+"'");
+                descriptionList.add(builder.toString());
+            }
+
+            return stringBuilder.toString();
+        }).collect(Collectors.toList());
+        if(tableInfoMapper.dmDataBaseExist(dataBaseName)>0){
+            tableInfoMapper.useDmDataBase(dataBaseName);
+            tableInfoMapper.createDmTable(tableName,list);
+            descriptionList.stream().forEach(f->tableInfoMapper.addTableDescription(f));
+        }else {
+            tableInfoMapper.createDmDataBase(dataBaseName);
+            tableInfoMapper.useDmDataBase(dataBaseName);
+            tableInfoMapper.createDmTable(tableName,list);
+            descriptionList.stream().forEach(f->tableInfoMapper.addTableDescription(f));
+        }
+    }
 }

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

@@ -60,6 +60,31 @@
         select count(1) from dba_segments where dba_segments.OWNER=#{dataBaseName} and SEGMENT_NAME=#{tableName}
     </select>
 
+    <select id="dmDataBaseExist" resultType="int">
+        select COUNT(1) from sysobjects where NAME=#{dataBaseName} and SUBTYPE$ is null
+    </select>
+
+    <update id="createDmDataBase">
+        CREATE SCHEMA ${databaseName}
+    </update>
+
+    <update id="useDmDataBase">
+        set schema ${dataBaseName};
+    </update>
+
+    <update id="createDmTable">
+
+        create table ${tableName}
+        (
+            <foreach collection="filedList" item="filed" separator=",">
+                ${filed}
+            </foreach>
+        );
+    </update>
+
+    <update id="addTableDescription">
+           ${description}
+    </update>
 
 
 </mapper>