Browse Source

后端数据库mybatis添加

zhanghaijun 2 years ago
parent
commit
bb0c24f786
25 changed files with 505 additions and 56 deletions
  1. 6 0
      pom.xml
  2. 1 0
      train-common/pom.xml
  3. 5 0
      train-common/train-common-bom/pom.xml
  4. 38 0
      train-common/train-common-core/src/main/java/top/haijunit/common/exception/ServiceException.java
  5. 34 0
      train-common/train-common-core/src/main/java/top/haijunit/common/factory/YmlPropertySourceFactory.java
  6. 23 0
      train-common/train-common-mybatis/pom.xml
  7. 63 0
      train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/config/MybatisPlusConfig.java
  8. 45 0
      train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/domain/BaseEntity.java
  9. 51 0
      train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/handler/InjectionMetaObjectHandler.java
  10. 43 0
      train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/handler/MybatisExceptionHandler.java
  11. 23 0
      train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/mapper/BaseMapper.java
  12. 1 0
      train-common/train-common-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  13. 33 0
      train-common/train-common-mybatis/src/main/resources/common-mybatis.yml
  14. 4 5
      train-server/pom.xml
  15. 0 25
      train-server/src/main/java/top/haijunit/train/config/MybatisPlusConfig.java
  16. 11 0
      train-server/src/main/java/top/haijunit/train/controller/DemoController.java
  17. 2 2
      train-server/src/main/java/top/haijunit/train/domain/constant/SignEnum.java
  18. 20 0
      train-server/src/main/java/top/haijunit/train/domain/constant/StatusEnum.java
  19. 25 8
      train-server/src/main/java/top/haijunit/train/domain/entity/SignEntity.java
  20. 5 1
      train-server/src/main/java/top/haijunit/train/domain/entity/UserEntity.java
  21. 12 0
      train-server/src/main/java/top/haijunit/train/mapper/SignMapper.java
  22. 30 0
      train-server/src/main/java/top/haijunit/train/service/UserService.java
  23. 1 8
      train-server/src/main/resources/application.yml
  24. 13 7
      train-server/src/main/resources/db/changelog/db-server-train.xml
  25. 16 0
      train-server/src/main/resources/db/changelog/db-server.xml

+ 6 - 0
pom.xml

@@ -59,6 +59,12 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-boot-starter</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 

+ 1 - 0
train-common/pom.xml

@@ -13,5 +13,6 @@
     <modules>
         <module>train-common-bom</module>
         <module>train-common-core</module>
+        <module>train-common-mybatis</module>
     </modules>
 </project>

+ 5 - 0
train-common/train-common-bom/pom.xml

@@ -18,6 +18,11 @@
                 <artifactId>train-common-core</artifactId>
                 <version>${revision}</version>
             </dependency>
+            <dependency>
+                <groupId>top.haijunit</groupId>
+                <artifactId>train-common-mybatis</artifactId>
+                <version>${revision}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 </project>

+ 38 - 0
train-common/train-common-core/src/main/java/top/haijunit/common/exception/ServiceException.java

@@ -0,0 +1,38 @@
+package top.haijunit.common.exception;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/11 12:23
+ * @description 业务异常
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class ServiceException extends RuntimeException {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /** 错误码 */
+    private Integer code;
+    /** 错误提示 */
+    private String message;
+
+    public ServiceException(String message, Integer code) {
+        this.message = message;
+        this.code = code;
+    }
+
+    @Override
+    public String getMessage() {
+        return message;
+    }
+}

+ 34 - 0
train-common/train-common-core/src/main/java/top/haijunit/common/factory/YmlPropertySourceFactory.java

@@ -0,0 +1,34 @@
+package top.haijunit.common.factory;
+
+import cn.hutool.core.util.StrUtil;
+import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
+import org.springframework.core.env.PropertiesPropertySource;
+import org.springframework.core.env.PropertySource;
+import org.springframework.core.io.support.DefaultPropertySourceFactory;
+import org.springframework.core.io.support.EncodedResource;
+
+import java.io.IOException;
+import java.util.Objects;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/11 11:54
+ * @description yml 配置源工厂
+ */
+public class YmlPropertySourceFactory extends DefaultPropertySourceFactory {
+
+    @Override
+    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
+        String sourceName = resource.getResource().getFilename();
+        if (StrUtil.isNotBlank(sourceName) && StrUtil.endWithAny(sourceName, ".yml", ".yaml")) {
+            YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
+            factory.setResources(resource.getResource());
+            factory.afterPropertiesSet();
+            if (sourceName != null) {
+                return new PropertiesPropertySource(sourceName, Objects.requireNonNull(factory.getObject()));
+            }
+        }
+        return super.createPropertySource(name, resource);
+    }
+
+}

+ 23 - 0
train-common/train-common-mybatis/pom.xml

@@ -0,0 +1,23 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>top.haijunit</groupId>
+        <artifactId>train-common</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <artifactId>train-common-mybatis</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>top.haijunit</groupId>
+            <artifactId>train-common-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 63 - 0
train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/config/MybatisPlusConfig.java

@@ -0,0 +1,63 @@
+package top.haijunit.mybatis.config;
+
+import cn.hutool.core.net.NetUtil;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
+import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+import top.haijunit.common.factory.YmlPropertySourceFactory;
+import top.haijunit.mybatis.handler.InjectionMetaObjectHandler;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/3 16:36
+ * @description Mybatis配置
+ */
+@EnableTransactionManagement(proxyTargetClass = true)
+@AutoConfiguration
+@MapperScan("${mybatis-plus.mapperPackage}")
+@PropertySource(value = "classpath:common-mybatis.yml", factory = YmlPropertySourceFactory.class)
+public class MybatisPlusConfig {
+
+    @Bean
+    public MetaObjectHandler metaObjectHandler() {
+        return new InjectionMetaObjectHandler();
+    }
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        // 分页插件
+        interceptor.addInnerInterceptor(paginationInnerInterceptor());
+        return interceptor;
+    }
+
+    /**
+     * 使用网卡信息绑定雪花生成器
+     * 防止集群雪花ID重复
+     */
+    @Bean
+    public IdentifierGenerator idGenerator() {
+        return new DefaultIdentifierGenerator(NetUtil.getLocalhost());
+    }
+
+    /**
+     * 分页插件,自动识别数据库类型
+     */
+    public PaginationInnerInterceptor paginationInnerInterceptor() {
+        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
+        // 设置最大单页限制数量,默认 500 条,-1 不受限制
+        paginationInnerInterceptor.setMaxLimit(-1L);
+        // 分页合理化
+        paginationInnerInterceptor.setOverflow(true);
+        return paginationInnerInterceptor;
+    }
+
+}
+

+ 45 - 0
train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/domain/BaseEntity.java

@@ -0,0 +1,45 @@
+package top.haijunit.mybatis.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/11 11:35
+ * @description Entity基类
+ */
+@Data
+public class BaseEntity implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 创建者
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+}

+ 51 - 0
train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/handler/InjectionMetaObjectHandler.java

@@ -0,0 +1,51 @@
+package top.haijunit.mybatis.handler;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpStatus;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.reflection.MetaObject;
+import top.haijunit.common.exception.ServiceException;
+import top.haijunit.mybatis.domain.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/11 12:20
+ * @description MP注入处理器
+ */
+@Slf4j
+public class InjectionMetaObjectHandler implements MetaObjectHandler {
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        try {
+            if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
+                Date current = ObjectUtil.isNotNull(baseEntity.getCreateTime()) ? baseEntity.getCreateTime() : new Date();
+                baseEntity.setCreateTime(current);
+                baseEntity.setUpdateTime(current);
+                Long userId = ObjectUtil.isNotNull(baseEntity.getCreateBy()) ? baseEntity.getCreateBy() : 0;
+                baseEntity.setCreateBy(userId);
+                baseEntity.setUpdateBy(userId);
+            }
+        } catch (Exception e) {
+            throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
+        }
+    }
+
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        try {
+            if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
+                Date current = new Date();
+                // 更新时间填充(不管为不为空)
+                baseEntity.setUpdateTime(current);
+                // 更新人填充(不管为不为空)
+                baseEntity.setUpdateBy(0L);
+            }
+        } catch (Exception e) {
+            throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
+        }
+    }
+
+}

+ 43 - 0
train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/handler/MybatisExceptionHandler.java

@@ -0,0 +1,43 @@
+package top.haijunit.mybatis.handler;
+
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.MyBatisSystemException;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import top.haijunit.common.domain.ResultData;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/11 11:42
+ * @description Mybatis异常处理器
+ */
+@Slf4j
+@RestControllerAdvice
+public class MybatisExceptionHandler {
+    /**
+     * 主键或UNIQUE索引,数据重复异常
+     */
+    @ExceptionHandler(DuplicateKeyException.class)
+    public ResultData<String> handleDuplicateKeyException(DuplicateKeyException e, HttpServletRequest request) {
+        String requestURI = request.getRequestURI();
+        log.error("请求地址'{}',数据库中已存在记录'{}'", requestURI, e.getMessage());
+        return ResultData.fail("数据库中已存在该记录,请联系管理员确认", "");
+    }
+
+    /**
+     * Mybatis系统异常 通用处理
+     */
+    @ExceptionHandler(MyBatisSystemException.class)
+    public ResultData<String> handleCannotFindDataSourceException(MyBatisSystemException e, HttpServletRequest request) {
+        String requestURI = request.getRequestURI();
+        String message = e.getMessage();
+        if (message.contains("CannotFindDataSourceException")) {
+            log.error("请求地址'{}', 未找到数据源", requestURI);
+            return ResultData.fail("未找到数据源,请联系管理员确认", "");
+        }
+        log.error("请求地址'{}', Mybatis系统异常", requestURI, e);
+        return ResultData.fail(message, "");
+    }
+}

+ 23 - 0
train-common/train-common-mybatis/src/main/java/top/haijunit/mybatis/mapper/BaseMapper.java

@@ -0,0 +1,23 @@
+package top.haijunit.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.reflect.GenericTypeUtils;
+
+import java.util.List;
+
+/**
+ * @author zhanghaijun
+ * @version 1.0
+ * @date 2023/11/11 12:10
+ * @description [一句话描述该类的功能]
+ */
+public interface BaseMapper<T> extends com.baomidou.mybatisplus.core.mapper.BaseMapper<T> {
+
+    default Class<T> currentModelClass() {
+        return (Class<T>) GenericTypeUtils.resolveTypeArguments(this.getClass(), BaseMapper.class)[0];
+    }
+
+    default List<T> selectList() {
+        return this.selectList(new QueryWrapper<>());
+    }
+}

+ 1 - 0
train-common/train-common-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1 @@
+top.haijunit.mybatis.config.MybatisPlusConfig

+ 33 - 0
train-common/train-common-mybatis/src/main/resources/common-mybatis.yml

@@ -0,0 +1,33 @@
+# 内置配置 不允许修改 如需修改请在 nacos 上写相同配置覆盖
+# MyBatisPlus配置
+# https://baomidou.com/config/
+mybatis-plus:
+  # 启动时是否检查 MyBatis XML 文件的存在,默认不检查
+  checkConfigLocation: false
+  configuration:
+    # 自动驼峰命名规则(camel case)映射
+    mapUnderscoreToCamelCase: true
+    # MyBatis 自动映射策略
+    # NONE:不启用 PARTIAL:只对非嵌套 resultMap 自动映射 FULL:对所有 resultMap 自动映射
+    autoMappingBehavior: FULL
+    # MyBatis 自动映射时未知列或未知属性处理策
+    # NONE:不做处理 WARNING:打印相关警告 FAILING:抛出异常和详细信息
+    autoMappingUnknownColumnBehavior: NONE
+    # 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
+    # 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
+    # 默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
+    logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+  global-config:
+    # 是否打印 Logo banner
+    banner: true
+    dbConfig:
+      # 主键类型
+      # AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID
+      idType: ASSIGN_ID
+      # 逻辑已删除值(框架表均使用此值 禁止随意修改)
+      logicDeleteValue: 2
+      # 逻辑未删除值
+      logicNotDeleteValue: 0
+      insertStrategy: NOT_NULL
+      updateStrategy: NOT_NULL
+      whereStrategy: NOT_NULL

+ 4 - 5
train-server/pom.xml

@@ -17,6 +17,10 @@
             <groupId>top.haijunit</groupId>
             <artifactId>train-common-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>top.haijunit</groupId>
+            <artifactId>train-common-mybatis</artifactId>
+        </dependency>
         <!-- SpringBoot Web容器 -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -45,11 +49,6 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-thymeleaf</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>${mybatis-plus.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.liquibase</groupId>
             <artifactId>liquibase-core</artifactId>

+ 0 - 25
train-server/src/main/java/top/haijunit/train/config/MybatisPlusConfig.java

@@ -1,25 +0,0 @@
-package top.haijunit.train.config;
-
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author zhanghaijun
- * @date 2023/11/3 16:36
- * @description Mybatis配置
- */
-@Configuration
-@MapperScan("top.haijunit.train.mapper")
-public class MybatisPlusConfig {
-
-    /**
-     * 分页插件
-     */
-    @Bean
-    public PaginationInnerInterceptor paginationInterceptor() {
-        return new PaginationInnerInterceptor();
-    }
-}
-

+ 11 - 0
train-server/src/main/java/top/haijunit/train/controller/DemoController.java

@@ -6,6 +6,10 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import top.haijunit.common.domain.ResultData;
+import top.haijunit.train.domain.entity.UserEntity;
+import top.haijunit.train.service.UserService;
+
+import java.util.List;
 
 /**
  * @author zhanghaijun
@@ -18,8 +22,15 @@ import top.haijunit.common.domain.ResultData;
 @RequestMapping("/demo")
 public class DemoController {
 
+    private final UserService userService;
+
     @GetMapping("")
     public ResultData<String> demo() {
         return ResultData.success("");
     }
+
+    @GetMapping("/user")
+    public ResultData<List<UserEntity>> getUser() {
+        return ResultData.success(userService.getUserAll());
+    }
 }

+ 2 - 2
train-server/src/main/java/top/haijunit/train/domain/constant/SignEnum.java

@@ -13,8 +13,8 @@ import lombok.Getter;
 public enum SignEnum {
 
     MachineSign("MachineSign", "信号机"),
-    forkSign("forkSign", "道岔"),
-    stopSign("stopSign", "停车标");
+    ForkSign("forkSign", "道岔"),
+    StopSign("stopSign", "停车标");
 
     private final String code;
     private final String describe;

+ 20 - 0
train-server/src/main/java/top/haijunit/train/domain/constant/StatusEnum.java

@@ -0,0 +1,20 @@
+package top.haijunit.train.domain.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/11 10:25
+ * @description 状态枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum StatusEnum {
+
+    Valid("valid","有效"),
+    Disable("disable","禁用");
+
+    private final String code;
+    private final String describe;
+}

+ 25 - 8
train-server/src/main/java/top/haijunit/train/domain/entity/SignEntity.java

@@ -1,26 +1,43 @@
 package top.haijunit.train.domain.entity;
 
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.haijunit.mybatis.domain.BaseEntity;
 import top.haijunit.train.domain.constant.DirectionEnum;
+import top.haijunit.train.domain.constant.SignEnum;
+import top.haijunit.train.domain.constant.StatusEnum;
 
 /**
  * @author zhanghaijun
- * @version 1.0
  * @date 2023/11/8 11:52
- * @description [一句话描述该类的功能]
+ * @description 轨道中的点位
  */
 @Data
-public class SignEntity {
+@EqualsAndHashCode(callSuper = true)
+@TableName("db_sign")
+public class SignEntity extends BaseEntity {
 
-    /** 名称 */
+    @TableId(value = "id")
+    private Long id;
+
+    /** 点位 名称 */
     private String name;
-    /** 编号 */
+    /** 点位 编号 */
     private String code;
-    /** 公里标 */
+    /** 点位 公里标 */
     private Long kilometer;
     /** 上行/下行 */
     private DirectionEnum direction;
     /** 状态 */
-    private String status;
-
+    private StatusEnum signStatus;
+    /** 标识类型 */
+    private SignEnum signType;
+    /** 所在区段名称 */
+    private String selectionName;
+    /** 归属车站 编码 */
+    private String stationCode;
+    /** 归属车站 名称 */
+    private String stationName;
 }

+ 5 - 1
train-server/src/main/java/top/haijunit/train/domain/entity/UserEntity.java

@@ -3,15 +3,19 @@ package top.haijunit.train.domain.entity;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.haijunit.mybatis.domain.BaseEntity;
 
 /**
  * @author zhanghaijun
  * @date 2023/11/3 16:36
  * @description user实体
  */
+
 @Data
+@EqualsAndHashCode(callSuper = true)
 @TableName("db_user")
-public class UserEntity {
+public class UserEntity extends BaseEntity {
 
     @TableId(value = "user_id")
     private Long userId;

+ 12 - 0
train-server/src/main/java/top/haijunit/train/mapper/SignMapper.java

@@ -0,0 +1,12 @@
+package top.haijunit.train.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import top.haijunit.train.domain.entity.SignEntity;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/11 11:37
+ * @description 轨道中的点位 数据库操作
+ */
+public interface SignMapper extends BaseMapper<SignEntity> {
+}

+ 30 - 0
train-server/src/main/java/top/haijunit/train/service/UserService.java

@@ -0,0 +1,30 @@
+package top.haijunit.train.service;
+
+import cn.hutool.core.util.RandomUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import top.haijunit.train.domain.entity.UserEntity;
+import top.haijunit.train.mapper.UserMapper;
+
+import java.util.List;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/11 12:06
+ * @description 用户业务处理
+ */
+@Service
+@RequiredArgsConstructor
+public class UserService {
+
+    private final UserMapper userMapper;
+
+    public List<UserEntity> getUserAll() {
+        UserEntity user = new UserEntity();
+        user.setUsername(RandomUtil.randomString(4));
+        user.setEmail(RandomUtil.randomString(4) + "@qq.com");
+        userMapper.insert(user);
+        return userMapper.selectList(new QueryWrapper<>());
+    }
+}

+ 1 - 8
train-server/src/main/resources/application.yml

@@ -79,16 +79,9 @@ logging:
 # MyBatisPlus配置
 # https://baomidou.com/config/
 mybatis-plus:
-  # 不支持多包, 如有需要可在注解配置 或 提升扫包等级
-  # 例如 com.**.**.mapper
   mapperPackage: top.haijunit.train.**.mapper
-  # 对应的 XML 文件位置
   mapperLocations: classpath*:mapper/**/*Mapper.xml
-  # 实体扫描,多个package用逗号或者分号分隔
-  typeAliasesPackage: top.haijunit.train.**.domain
+  typeAliasesPackage: top.haijunit.**.domain
   global-config:
     dbConfig:
-      # 主键类型
-      # AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID
-      # 如需改为自增 需要将数据库表全部设置为自增
       idType: ASSIGN_ID

+ 13 - 7
train-server/src/main/resources/db/changelog/db-server-train.xml

@@ -4,16 +4,22 @@
     xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
     xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
 
-
-    <changeSet id="demo" author="zhanghaijun" failOnError="false" runOnChange="true">
-        <createTable tableName="db_user" schemaName="${schema.name}" remarks="用户表">
-            <column name="user_id" type="${autoing.type}" autoIncrement="true" remarks="用户Id">
+    <changeSet id="createTable-db_sign" author="zhanghaijun" failOnError="false" runOnChange="true">
+        <createTable tableName="db_sign" schemaName="${schema.name}" remarks="轨道点位表">
+            <column name="id" type="${autoing.type}" autoIncrement="true" remarks="唯一标识">
                 <constraints nullable="false" primaryKey="true"/>
             </column>
-            <column name="username" type="VARCHAR(255)" defaultValue="" remarks="用户名称"/>
-            <column name="email" type="VARCHAR(128)" defaultValue="" remarks="邮箱地址"/>
+            <column name="name" type="VARCHAR(128)" defaultValue="" remarks="名称"/>
+            <column name="code" type="VARCHAR(64)" defaultValue="" remarks="编号"/>
+            <column name="kilometer" type="${number.type}" defaultValueNumeric="0" remarks="公里标(单位mm)"/>
+            <column name="direction" type="VARCHAR(64)" defaultValue="" remarks="上行/下行"/>
+            <column name="sign_status" type="VARCHAR(128)" defaultValue="" remarks="状态行"/>
+            <column name="sign_type" type="VARCHAR(128)" defaultValue="" remarks="点位类型"/>
+
+            <column name="station_code" type="VARCHAR(64)" defaultValue="" remarks="归属车站/编码 "/>
+            <column name="station_name" type="VARCHAR(128)" defaultValue="" remarks="归属车站/名称 "/>
+            <column name="selection_name" type="VARCHAR(128)" defaultValue="" remarks="所在区段名称"/>
 
-            <column name="status" type="${number.type}" defaultValue="1" remarks="数据状态"/>
             <column name="create_time" type="datetime" remarks="创建时间"/>
             <column name="create_by" type="${autoing.type}" remarks="创建者"/>
             <column name="update_time" type="datetime" remarks="更新时间"/>

+ 16 - 0
train-server/src/main/resources/db/changelog/db-server.xml

@@ -30,6 +30,22 @@
         </sql>
     </changeSet>
 
+    <changeSet id="demo" author="zhanghaijun" failOnError="false" runOnChange="true">
+        <createTable tableName="db_user" schemaName="${schema.name}" remarks="用户表">
+            <column name="user_id" type="${autoing.type}" autoIncrement="true" remarks="用户Id">
+                <constraints nullable="false" primaryKey="true"/>
+            </column>
+            <column name="username" type="VARCHAR(255)" defaultValue="" remarks="用户名称"/>
+            <column name="email" type="VARCHAR(128)" defaultValue="" remarks="邮箱地址"/>
+
+            <column name="status" type="${number.type}" defaultValue="1" remarks="数据状态"/>
+            <column name="create_time" type="datetime" remarks="创建时间"/>
+            <column name="create_by" type="${autoing.type}" remarks="创建者"/>
+            <column name="update_time" type="datetime" remarks="更新时间"/>
+            <column name="update_by" type="${autoing.type}" remarks="更新者"/>
+        </createTable>
+    </changeSet>
+
     <include relativeToChangelogFile="true" file="db-server-train.xml"/>
 
 </databaseChangeLog>