From adf375648b0476eeaf0e4473567bbd875a149495 Mon Sep 17 00:00:00 2001
From: ZZX9599 <536509593@qq.com>
Date: Tue, 16 Sep 2025 17:41:23 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=9B=B8=E5=85=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 7 ++
.../controller/FileInfoController.java | 7 +-
.../business/controller/ModelController.java | 65 +++++++++++++++++++
.../controller/ModelTypeController.java | 12 ++++
.../business/controller/SourceController.java | 11 ++--
.../com/yj/earth/business/domain/Model.java | 49 ++++++++++++++
.../yj/earth/business/domain/ModelType.java | 35 ++++++++++
.../yj/earth/business/mapper/ModelMapper.java | 18 +++++
.../business/mapper/ModelTypeMapper.java | 18 +++++
.../earth/business/service/ModelService.java | 16 +++++
.../business/service/ModelTypeService.java | 16 +++++
.../service/impl/ModelServiceImpl.java | 20 ++++++
.../service/impl/ModelTypeServiceImpl.java | 20 ++++++
.../yj/earth/common/config/SaTokenConfig.java | 1 +
.../{JsonMapConverter.java => JsonUtil.java} | 2 +-
.../yj/earth/datasource/DatabaseManager.java | 5 +-
.../earth/datasource/JdbcTemplateConfig.java | 2 +-
.../earth/dto/model/CreateModelFileDto.java | 12 ++++
.../earth/dto/source/AddModelSourceDto.java | 6 +-
.../java/com/yj/earth/params/Tileset.java | 1 +
src/main/resources/mapper/ModelMapper.xml | 24 +++++++
src/main/resources/mapper/ModelTypeMapper.xml | 19 ++++++
22 files changed, 350 insertions(+), 16 deletions(-)
create mode 100644 src/main/java/com/yj/earth/business/controller/ModelController.java
create mode 100644 src/main/java/com/yj/earth/business/controller/ModelTypeController.java
create mode 100644 src/main/java/com/yj/earth/business/domain/Model.java
create mode 100644 src/main/java/com/yj/earth/business/domain/ModelType.java
create mode 100644 src/main/java/com/yj/earth/business/mapper/ModelMapper.java
create mode 100644 src/main/java/com/yj/earth/business/mapper/ModelTypeMapper.java
create mode 100644 src/main/java/com/yj/earth/business/service/ModelService.java
create mode 100644 src/main/java/com/yj/earth/business/service/ModelTypeService.java
create mode 100644 src/main/java/com/yj/earth/business/service/impl/ModelServiceImpl.java
create mode 100644 src/main/java/com/yj/earth/business/service/impl/ModelTypeServiceImpl.java
rename src/main/java/com/yj/earth/common/util/{JsonMapConverter.java => JsonUtil.java} (97%)
create mode 100644 src/main/java/com/yj/earth/dto/model/CreateModelFileDto.java
create mode 100644 src/main/resources/mapper/ModelMapper.xml
create mode 100644 src/main/resources/mapper/ModelTypeMapper.xml
diff --git a/pom.xml b/pom.xml
index b921ae9..1ea7803 100644
--- a/pom.xml
+++ b/pom.xml
@@ -168,6 +168,13 @@
+
+
+
+ org.gdal
+ gdal
+ 3.11.4
+
diff --git a/src/main/java/com/yj/earth/business/controller/FileInfoController.java b/src/main/java/com/yj/earth/business/controller/FileInfoController.java
index a454816..546ef9a 100644
--- a/src/main/java/com/yj/earth/business/controller/FileInfoController.java
+++ b/src/main/java/com/yj/earth/business/controller/FileInfoController.java
@@ -15,12 +15,10 @@ import java.util.*;
import cn.hutool.crypto.digest.DigestUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yj.earth.business.domain.FileInfo;
import com.yj.earth.business.service.FileInfoService;
import com.yj.earth.common.util.ApiResponse;
-import com.yj.earth.common.util.JsonMapConverter;
+import com.yj.earth.common.util.JsonUtil;
import com.yj.earth.vo.FileInfoVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -39,7 +37,6 @@ import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
-import java.util.stream.Collectors;
@Tag(name = "文件数据管理")
@RestController
@@ -259,7 +256,7 @@ public class FileInfoController {
result.put("previewUrl", "/fileInfo/preview/" + fileInfo.getId());
result.put("downloadUrl", "/fileInfo/download/" + fileInfo.getId());
result.put("metadata", metadata);
- return JsonMapConverter.mapToJson(result);
+ return JsonUtil.mapToJson(result);
} catch (IOException e) {
throw new RuntimeException("文件上传失败: " + e.getMessage(), e);
}
diff --git a/src/main/java/com/yj/earth/business/controller/ModelController.java b/src/main/java/com/yj/earth/business/controller/ModelController.java
new file mode 100644
index 0000000..5d2b07e
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/controller/ModelController.java
@@ -0,0 +1,65 @@
+package com.yj.earth.business.controller;
+
+import com.yj.earth.business.service.ModelService;
+import com.yj.earth.business.service.ModelTypeService;
+import com.yj.earth.common.util.ApiResponse;
+import com.yj.earth.datasource.DatabaseManager;
+import com.yj.earth.design.Model;
+import com.yj.earth.design.ModelType;
+import com.yj.earth.dto.model.CreateModelFileDto;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+@Tag(name = "模型相关")
+@RestController
+@RequestMapping("/model")
+public class ModelController {
+ @Resource
+ private ModelService modelService;
+ @Resource
+ private ModelTypeService modelTypeService;
+
+ @Operation(summary = "创建模型库")
+ @PostMapping("/createModelFile")
+ public ApiResponse createModelFile(@RequestBody CreateModelFileDto createModelFileDto) {
+ try {
+ // 获取参数并处理文件路径
+ String folderPath = createModelFileDto.getFolderPath();
+ String modelFileName = createModelFileDto.getModelFileName() + ".model";
+ // 创建文件夹(如果不存在)
+ File folder = new File(folderPath);
+ if (!folder.exists()) {
+ boolean folderCreated = folder.mkdirs();
+ if (!folderCreated) {
+ return ApiResponse.failure("无法创建文件夹: " + folderPath);
+ }
+ }
+ // 构建完整文件路径
+ String filePath = folderPath + File.separator + modelFileName;
+ // 加载 SQLite 驱动并创建数据库文件
+ Class.forName("org.sqlite.JDBC");
+ // SQLite会自动创建不存在的数据库文件
+ try (Connection connection = DriverManager.getConnection("jdbc:sqlite:" + filePath)) {
+ if (connection != null) {
+ // 初始化表结构
+ DatabaseManager.createTablesForEntities(DatabaseManager.DatabaseType.SQLITE, ModelType.class, connection);
+ DatabaseManager.createTablesForEntities(DatabaseManager.DatabaseType.SQLITE, Model.class, connection);
+ return ApiResponse.success(null);
+ }
+ }
+ } catch (Exception e) {
+ return ApiResponse.failure("创建模型库失败: " + e.getMessage());
+ }
+ return ApiResponse.failure("未知错误");
+ }
+}
diff --git a/src/main/java/com/yj/earth/business/controller/ModelTypeController.java b/src/main/java/com/yj/earth/business/controller/ModelTypeController.java
new file mode 100644
index 0000000..a63cd88
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/controller/ModelTypeController.java
@@ -0,0 +1,12 @@
+package com.yj.earth.business.controller;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Tag(name = "模型类型管理")
+@RestController
+@RequestMapping("/modelType")
+public class ModelTypeController {
+
+}
diff --git a/src/main/java/com/yj/earth/business/controller/SourceController.java b/src/main/java/com/yj/earth/business/controller/SourceController.java
index b436d84..8caeeb6 100644
--- a/src/main/java/com/yj/earth/business/controller/SourceController.java
+++ b/src/main/java/com/yj/earth/business/controller/SourceController.java
@@ -21,6 +21,7 @@ import com.yj.earth.business.service.*;
import com.yj.earth.common.service.SourceDataGenerator;
import com.yj.earth.common.service.SourceParamsValidator;
import com.yj.earth.common.util.ApiResponse;
+import com.yj.earth.common.util.JsonUtil;
import com.yj.earth.common.util.MapUtil;
import com.yj.earth.dto.source.*;
import io.swagger.v3.oas.annotations.Operation;
@@ -109,7 +110,7 @@ public class SourceController {
source.setSourceName(sourceName);
source.setParentId(addModelSourceDto.getParentId());
source.setTreeIndex(addModelSourceDto.getTreeIndex());
- source.setParams(addModelSourceDto.getParams());
+ source.setParams(JsonUtil.mapToJson(addModelSourceDto.getParams()));
source.setDetail(detail);
source.setSourceType(MapUtil.getString(MapUtil.jsonToMap(detail), "fileType"));
source.setIsShow(SHOW);
@@ -155,7 +156,7 @@ public class SourceController {
// 更新基本信息
BeanUtils.copyProperties(updateSourceDto, source);
// 处理参数更新
- if (updateSourceDto.getParams() != null && !updateSourceDto.getParams().isEmpty()) {
+ if (updateSourceDto.getParams() != null) {
// 获取类型
String sourceType = source.getSourceType();
// 验证参数
@@ -163,10 +164,8 @@ public class SourceController {
sourceType,
updateSourceDto.getParams()
);
- // 获取原始数据的 Map 并合并新参数
- Map dataMap = MapUtil.jsonToMap(source.getParams());
- MapUtil.mergeMaps(dataMap, updateSourceDto.getParams());
- source.setParams(MapUtil.mapToString(dataMap));
+ System.out.println("更新的数据:" + validatedParams);
+ source.setParams(MapUtil.mapToString(updateSourceDto.getParams()));
}
// 保存更新
sourceService.updateById(source);
diff --git a/src/main/java/com/yj/earth/business/domain/Model.java b/src/main/java/com/yj/earth/business/domain/Model.java
new file mode 100644
index 0000000..4cc5e0a
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/domain/Model.java
@@ -0,0 +1,49 @@
+package com.yj.earth.business.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+
+@Data
+public class Model implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "主键")
+ @TableId(value = "id", type = IdType.ASSIGN_UUID)
+ private String id;
+
+ @Schema(description = "模型类型ID")
+ private String modelTypeId;
+
+ @Schema(description = "模型名称")
+ private String modelName;
+
+ @Schema(description = "模型类型")
+ private String modelType;
+
+ @Schema(description = "海报类型")
+ private String posterType;
+
+ @Schema(description = "海报")
+ private byte[] poster;
+
+ @Schema(description = "数据")
+ private byte[] data;
+
+ @Schema(description = "视图")
+ private String view;
+
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createdAt;
+
+ @TableField(fill = FieldFill.UPDATE)
+ private LocalDateTime updatedAt;
+}
diff --git a/src/main/java/com/yj/earth/business/domain/ModelType.java b/src/main/java/com/yj/earth/business/domain/ModelType.java
new file mode 100644
index 0000000..b303c8a
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/domain/ModelType.java
@@ -0,0 +1,35 @@
+package com.yj.earth.business.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+public class ModelType implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "主键")
+ @TableId(value = "id", type = IdType.ASSIGN_UUID)
+ private String id;
+
+ @Schema(description = "模型类型名称")
+ private String name;
+
+ @Schema(description = "模型类型父级ID")
+ private String parentId;
+
+ @Schema(description = "创建时间")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createdAt;
+
+ @Schema(description = "更新时间")
+ @TableField(fill = FieldFill.UPDATE)
+ private LocalDateTime updatedAt;
+}
diff --git a/src/main/java/com/yj/earth/business/mapper/ModelMapper.java b/src/main/java/com/yj/earth/business/mapper/ModelMapper.java
new file mode 100644
index 0000000..9e46f96
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/mapper/ModelMapper.java
@@ -0,0 +1,18 @@
+package com.yj.earth.business.mapper;
+
+import com.yj.earth.business.domain.Model;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 周志雄
+ * @since 2025-09-16
+ */
+@Mapper
+public interface ModelMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/yj/earth/business/mapper/ModelTypeMapper.java b/src/main/java/com/yj/earth/business/mapper/ModelTypeMapper.java
new file mode 100644
index 0000000..7c89063
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/mapper/ModelTypeMapper.java
@@ -0,0 +1,18 @@
+package com.yj.earth.business.mapper;
+
+import com.yj.earth.business.domain.ModelType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 周志雄
+ * @since 2025-09-16
+ */
+@Mapper
+public interface ModelTypeMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/yj/earth/business/service/ModelService.java b/src/main/java/com/yj/earth/business/service/ModelService.java
new file mode 100644
index 0000000..53081cf
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/service/ModelService.java
@@ -0,0 +1,16 @@
+package com.yj.earth.business.service;
+
+import com.yj.earth.business.domain.Model;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 周志雄
+ * @since 2025-09-16
+ */
+public interface ModelService extends IService {
+
+}
diff --git a/src/main/java/com/yj/earth/business/service/ModelTypeService.java b/src/main/java/com/yj/earth/business/service/ModelTypeService.java
new file mode 100644
index 0000000..dbb4798
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/service/ModelTypeService.java
@@ -0,0 +1,16 @@
+package com.yj.earth.business.service;
+
+import com.yj.earth.business.domain.ModelType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 周志雄
+ * @since 2025-09-16
+ */
+public interface ModelTypeService extends IService {
+
+}
diff --git a/src/main/java/com/yj/earth/business/service/impl/ModelServiceImpl.java b/src/main/java/com/yj/earth/business/service/impl/ModelServiceImpl.java
new file mode 100644
index 0000000..03dfe3e
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/service/impl/ModelServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yj.earth.business.service.impl;
+
+import com.yj.earth.business.domain.Model;
+import com.yj.earth.business.mapper.ModelMapper;
+import com.yj.earth.business.service.ModelService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 周志雄
+ * @since 2025-09-16
+ */
+@Service
+public class ModelServiceImpl extends ServiceImpl implements ModelService {
+
+}
diff --git a/src/main/java/com/yj/earth/business/service/impl/ModelTypeServiceImpl.java b/src/main/java/com/yj/earth/business/service/impl/ModelTypeServiceImpl.java
new file mode 100644
index 0000000..8826fb9
--- /dev/null
+++ b/src/main/java/com/yj/earth/business/service/impl/ModelTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yj.earth.business.service.impl;
+
+import com.yj.earth.business.domain.ModelType;
+import com.yj.earth.business.mapper.ModelTypeMapper;
+import com.yj.earth.business.service.ModelTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 周志雄
+ * @since 2025-09-16
+ */
+@Service
+public class ModelTypeServiceImpl extends ServiceImpl implements ModelTypeService {
+
+}
diff --git a/src/main/java/com/yj/earth/common/config/SaTokenConfig.java b/src/main/java/com/yj/earth/common/config/SaTokenConfig.java
index 39c5296..9306d0c 100644
--- a/src/main/java/com/yj/earth/common/config/SaTokenConfig.java
+++ b/src/main/java/com/yj/earth/common/config/SaTokenConfig.java
@@ -26,6 +26,7 @@ public class SaTokenConfig implements WebMvcConfigurer {
excludePathPatterns.add("/data/clt/**");
excludePathPatterns.add("/data/mbtiles/**");
excludePathPatterns.add("/data/pak/**");
+ excludePathPatterns.add("/**");
// 注册 Sa-Token 拦截器
registry.addInterceptor(new SaInterceptor(handle -> {
diff --git a/src/main/java/com/yj/earth/common/util/JsonMapConverter.java b/src/main/java/com/yj/earth/common/util/JsonUtil.java
similarity index 97%
rename from src/main/java/com/yj/earth/common/util/JsonMapConverter.java
rename to src/main/java/com/yj/earth/common/util/JsonUtil.java
index ce96649..2b4e09c 100644
--- a/src/main/java/com/yj/earth/common/util/JsonMapConverter.java
+++ b/src/main/java/com/yj/earth/common/util/JsonUtil.java
@@ -12,7 +12,7 @@ import java.util.Map;
* Map与JSON互相转换工具类
*/
@Slf4j
-public class JsonMapConverter {
+public class JsonUtil {
private static final ObjectMapper objectMapper = new ObjectMapper();
diff --git a/src/main/java/com/yj/earth/datasource/DatabaseManager.java b/src/main/java/com/yj/earth/datasource/DatabaseManager.java
index ab2e3ac..328d97a 100644
--- a/src/main/java/com/yj/earth/datasource/DatabaseManager.java
+++ b/src/main/java/com/yj/earth/datasource/DatabaseManager.java
@@ -61,7 +61,6 @@ public class DatabaseManager {
log.info("{}数据库已初始化、无需重复执行", dbType.name());
return;
}
-
try {
loadConfig(dbType);
if (!validateConfig(dbType)) {
@@ -189,6 +188,10 @@ public class DatabaseManager {
}
}
+ public static void createTablesForEntities(DatabaseType dbType, Class entityClass, Connection connection) throws SQLException {
+ createTableIfNotExists(connection, dbType, entityClass);
+ }
+
private static void createTableIfNotExists(Connection connection, DatabaseType dbType, Class> entityClass) throws SQLException {
String tableName = getUnderlineName(entityClass.getSimpleName());
diff --git a/src/main/java/com/yj/earth/datasource/JdbcTemplateConfig.java b/src/main/java/com/yj/earth/datasource/JdbcTemplateConfig.java
index 8847891..acd47e5 100644
--- a/src/main/java/com/yj/earth/datasource/JdbcTemplateConfig.java
+++ b/src/main/java/com/yj/earth/datasource/JdbcTemplateConfig.java
@@ -9,7 +9,7 @@ import javax.sql.DataSource;
@Configuration
public class JdbcTemplateConfig {
/**
- * 配置JdbcTemplate
+ * 配置 JdbcTemplate
*/
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
diff --git a/src/main/java/com/yj/earth/dto/model/CreateModelFileDto.java b/src/main/java/com/yj/earth/dto/model/CreateModelFileDto.java
new file mode 100644
index 0000000..3cf9d42
--- /dev/null
+++ b/src/main/java/com/yj/earth/dto/model/CreateModelFileDto.java
@@ -0,0 +1,12 @@
+package com.yj.earth.dto.model;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class CreateModelFileDto {
+ @Schema(description = "模型库文件名称")
+ private String modelFileName;
+ @Schema(description = "生成文件夹路径")
+ private String folderPath;
+}
diff --git a/src/main/java/com/yj/earth/dto/source/AddModelSourceDto.java b/src/main/java/com/yj/earth/dto/source/AddModelSourceDto.java
index a525865..9621a87 100644
--- a/src/main/java/com/yj/earth/dto/source/AddModelSourceDto.java
+++ b/src/main/java/com/yj/earth/dto/source/AddModelSourceDto.java
@@ -3,9 +3,11 @@ package com.yj.earth.dto.source;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
+import java.util.Map;
+
@Data
public class AddModelSourceDto {
- @Schema (description = "资源ID")
+ @Schema(description = "资源ID")
private String id;
@Schema(description = "资源路径")
private String sourcePath;
@@ -14,5 +16,5 @@ public class AddModelSourceDto {
@Schema(description = "树状索引")
private Integer treeIndex;
@Schema(description = "前端参数")
- private String params;
+ private Map params;
}
diff --git a/src/main/java/com/yj/earth/params/Tileset.java b/src/main/java/com/yj/earth/params/Tileset.java
index 4b9e310..98032af 100644
--- a/src/main/java/com/yj/earth/params/Tileset.java
+++ b/src/main/java/com/yj/earth/params/Tileset.java
@@ -16,6 +16,7 @@ public class Tileset {
private boolean show;
private String name;
private int accuracy;
+ private double transparency;
@Data
public static class Orientation {
diff --git a/src/main/resources/mapper/ModelMapper.xml b/src/main/resources/mapper/ModelMapper.xml
new file mode 100644
index 0000000..aa97ec1
--- /dev/null
+++ b/src/main/resources/mapper/ModelMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, model_type_id, model_name, model_type, poster_type, poster, data, view, created_at, updated_at
+
+
+
diff --git a/src/main/resources/mapper/ModelTypeMapper.xml b/src/main/resources/mapper/ModelTypeMapper.xml
new file mode 100644
index 0000000..6716757
--- /dev/null
+++ b/src/main/resources/mapper/ModelTypeMapper.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, parent_id, created_at, updated_at
+
+
+