SpringCloud微服务拆分最佳实践

版本运用分析:

  1. JDK:17
  2. Mysql:8.0.4
  3. Maven:3.9.10
  4. SpringBoot:3.3.13
  5. mybatis-plus:3.5.7
  6. spring-data-redis:3.3.13
  7. spring-cache:3.3.13
  8. spring-cloud:2023.0.1
  9. nacos:3.0.2

Git: gitee.com/jxinyao/spr...

安装Nacos

设置密钥

默认账号和密码

创建项目

其他包删掉

创建emp-service模块 员工

创建dept-service模块 部门

创建common-pojo模块(存放实体类)

创建common-untils模块

修改父工程pom文件

引入父工程依赖

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>cn.jinzhu</groupId>
    <artifactId>System-cold</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>emp-service</module>
        <module>dept-service</module>
        <module>common-pojo</module>
        <module>common-untils</module>
    </modules>
<!--  spring-boot-starter-parent父依赖  -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.13</version>
    </parent>


    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>



</project>

引入共同依赖

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>cn.jinzhu</groupId>
    <artifactId>System-cold</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>emp-service</module>
        <module>dept-service</module>
        <module>common-pojo</module>
        <module>common-untils</module>
        <module>feign-api</module>
    </modules>
<!--  spring-boot-starter-parent父依赖  -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.13</version>
    </parent>


    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot-starter-web.version>3.3.13</spring-boot-starter-web.version>
        


    </properties>

    <!--  引入共有的依赖  -->
    <dependencies>
        <!--springboot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring-boot-starter-web.version}</version>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
    </dependencies>

管理版本依赖(并不会直接引入依赖)

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>cn.jinzhu</groupId>
    <artifactId>System-cold</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>emp-service</module>
        <module>dept-service</module>
        <module>common-pojo</module>
        <module>common-untils</module>
        <module>feign-api</module>
    </modules>
<!--  spring-boot-starter-parent父依赖  -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.13</version>
    </parent>


    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot-starter-web.version>3.3.13</spring-boot-starter-web.version>
        <mybatis-plus.version>3.5.7</mybatis-plus.version>
        <mysql.version>8.0.33</mysql.version>
        <lombok.version>1.18.22</lombok.version>
      


    </properties>

    <!--  引入共有的依赖  -->
    <dependencies>
        <!--springboot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring-boot-starter-web.version}</version>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
    </dependencies>

    <!-- 管理依赖版本  -->
    <dependencyManagement>
        <dependencies>
            <!--mysql-->
            <dependency>
                <groupId>com.mysql</groupId>
                <artifactId>mysql-connector-j</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>

操作common-pojo模块

修改pom文件引入依赖

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>cn.jinzhu</groupId>
        <artifactId>System-cold</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>common-pojo</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

</project>

创建包引入实体类

java 复制代码
package cn.jinzhu.Dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DeptSimpleDto implements Serializable {
        // 版本控制
        private static final long serialVersionUID = 1L;
        private Integer id;
        private String name;
        private LocalDateTime createTime;

}
java 复制代码
package cn.jinzhu.Dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDate;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EmpSimpleDto implements Serializable {
    // 版本控制
    private static final long serialVersionUID = 1L;
    private Integer id;
    private String name;
    private Short gender;
    private LocalDate entryDate;
    private Integer deptId;
}
java 复制代码
package cn.jinzhu.Dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class EmpSearchDto {
    private String name;
    private Short gender;
    private LocalDate begin;
    private LocalDate end;
    private Integer page;
    private Integer pageSize;
}

pojo

java 复制代码
package cn.jinzhu.pojo;


import cn.jinzhu.Dto.EmpSimpleDto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept implements Serializable {
    // 版本控制
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    private String name;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
    @TableField(exist = false)
    private List<EmpSimpleDto> empsSimple;
}
kotlin 复制代码
package cn.jinzhu.pojo;

import cn.jinzhu.Dto.DeptSimpleDto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("emp")
public class Emp implements Serializable {
    // 版本控制
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Short gender;
    private String phone;
    private Short job;
    private Integer salary;
    private String image;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate entryDate;
    private Integer deptId;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @TableField(exist = false)
    private DeptSimpleDto deptSimple;
}
java 复制代码
package cn.jinzhu.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean  implements Serializable {
    // 版本控制
    private static final long serialVersionUID = 1L;
    private Long total; // 总记录数
    private List rows; // 当前页数据列表
}
typescript 复制代码
package cn.jinzhu.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    // 成员变量
    private Integer code; // 响应码:1:成功,0:失败
    private String msg; // success:成功,error:失败
    private Object data; // 要封装的对象

    // 成功:根据不同的情况返回相对应的结果 无数据返回
    public static Result success(){
        // 创建Result对象
        Result result = new Result();
        // 封装数据
        result.code = 1;
        result.msg = "success";
        // 返回结果
        return result;
    }
    // 成功:根据不同的情况返回相对应的结果 有数据返回
    public static Result success(Object data){
        // 创建Result对象
        Result result = new Result();
        // 封装数据
        result.code = 1;
        result.msg = "success";
        result.data = data;
        // 返回结果
        return result;
    }
    // 失败:根据不同情况返回相对应的结果
    public static Result error(){
        // 创建Result对象
        Result result = new Result();
        // 封装数据
        result.code = 0;
        result.msg = "error";
        return result;
    }
    // 失败:根据不同情况返回相对应的结果
    public static Result error(String msg){
        // 创建Result对象
        Result result = new Result();
        // 封装数据
        result.code = 0;
        result.msg = msg;
        return result;
    }
}

操作common-utils模块

创建包,创建MybatisPlusConfig配置类(分页插件)

kotlin 复制代码
package cn.jinzhu;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {
    /**
     * 添加分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

操作dept-service模块

修改pom文件引入依赖

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>cn.jinzhu</groupId>
        <artifactId>System-cold</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>dept-service</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!--mysql-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--common-pojo-->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>common-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--common-utils-->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>common-untils</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>


</project>

创建包,创建DeptMapper接口

java 复制代码
@Mapper
public interface DeptMapper extends BaseMapper<Dept> {
}

创建包,创建DeptService接口

csharp 复制代码
public interface DeptService extends IService<Dept> {
    // 根据部门ID查询部门信息
    Dept queryById(Integer id);
}

创建包,创建DeptServicelmpl类

scala 复制代码
package cn.jinzhu.service.impl;

import cn.jinzhu.Mapper.DeptMapper;
import cn.jinzhu.pojo.Dept;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import cn.jinzhu.service.DeptService;

@Service
public class DeptServiczeImpl extends ServiceImpl<DeptMapper, Dept> implements DeptService {
    @Autowired
    DeptMapper deptMapper;

    // 根据部门Id获取部门信息
    @Override
    @Cacheable(cacheNames = "depts",key = "id")
    public Dept queryById(Integer id) {
        Dept dept = deptMapper.selectById(id);
        return dept;
    }

}

创建包,创建DeptController类

kotlin 复制代码
package cn.jinzhu.controller;

import cn.jinzhu.pojo.Dept;
import cn.jinzhu.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.jinzhu.service.DeptService;
@RestController
@RequestMapping("/depts")
@Slf4j
public class DeptController {
    @Autowired
    DeptService deptService;

    // 根据部门ID获取部门信息
    @GetMapping("/{id}")
    public Result queryById(@PathVariable Integer id) {
        log.info("根据部门ID:{}查询部门信息", id);
        Dept dept = deptService.queryById(id);
        return dept != null ? Result.success(dept): Result.error();
    }
}

创建application.yml配置文件

yaml 复制代码
server:
  port: 8080
spring:
  application:
    name: deptservice
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/spring_school
    username: root
    password: 123456
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true # 开启驼峰命名
logging:
  level:
    com.he: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS

创建DeptApplication启动类

typescript 复制代码
package cn.jinzhu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DeptApplication {
    public static void main(String[] args) {
        SpringApplication.run(DeptApplication.class, args);
    }
}

操作emp-service模块

修改pom文件引入依赖

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>cn.jinzhu</groupId>
        <artifactId>System-cold</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>emp-service</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
           
    <dependencies>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--common-pojo-->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>common-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--     common-untils       -->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>common-untils</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

创建包,创建EmpMapper接口

java 复制代码
@Mapper
public interface EmpMapper extends BaseMapper<Emp> {
}

创建包,创建EmpController类

kotlin 复制代码
package cn.jinzhu.controller;
import cn.jinzhu.Dto.EmpSearchDto;
import cn.jinzhu.pojo.PageBean;
import cn.jinzhu.pojo.Result;
import cn.jinzhu.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {
    @Autowired
    EmpService empService;
    @GetMapping
    public Result queryByInfo(@ModelAttribute EmpSearchDto empSearchDto){
        log.info("查询员工信息,参数:empDto={}", empSearchDto);
        PageBean pageBean = empService.queryByInfo(empSearchDto);
        return pageBean!=null?Result.success(pageBean): Result.error("查询失败!");
    }
}

创建包,创建EmpMapper接口

csharp 复制代码
public interface EmpService extends IService<Emp> {

    PageBean queryByInfo(EmpSearchDto empSearchDto);
}

创建包,创建EmpServiceimpl类

scala 复制代码
package cn.jinzhu.service.impl;

import cn.jinzhu.Dto.EmpSearchDto;
import cn.jinzhu.mapper.EmpMapper;
import cn.jinzhu.pojo.Emp;
import cn.jinzhu.pojo.PageBean;
import cn.jinzhu.service.EmpService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

@Service
public class EmpServiceimpl extends ServiceImpl<EmpMapper,Emp> implements EmpService {
    @Autowired
    EmpMapper empMapper;

    // 根据信息分页查询
    @Cacheable(cacheNames = "empsList",key = "#empSearchDto.hashCode()" )
    public PageBean queryByInfo(EmpSearchDto empSearchDto) {
        // 创建查询条件
        LambdaQueryWrapper<Emp> queryWrapper = new LambdaQueryWrapper();
        queryWrapper.like(StringUtils.hasLength(empSearchDto.getName()),Emp::getName, empSearchDto.getName())
                .eq(empSearchDto.getGender()!=null,Emp::getGender, empSearchDto.getGender())
                .ge(empSearchDto.getBegin()!=null,Emp::getEntryDate, empSearchDto.getBegin())
                .le(empSearchDto.getEnd()!=null,Emp::getEntryDate, empSearchDto.getEnd());
        // 创建分页条件
        if (empSearchDto.getPage() == null) {
            empSearchDto.setPage(1);
        }
        if (empSearchDto.getPageSize() == null) {
            empSearchDto.setPageSize(5);
        }
        Page<Emp> pageInfo = new Page<>(empSearchDto.getPage(), empSearchDto.getPageSize());
        // 执行查询
        Page<Emp> empPage = empMapper.selectPage(pageInfo, queryWrapper);
        // 封装数据
        PageBean pageBean = new PageBean(empPage.getTotal(), empPage.getRecords());
        // 返回数据
        return pageBean;
    }
}

创建EmpApplication启动类

typescript 复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
public class EmpApplication {
    public static void main(String[] args) {
        SpringApplication.run(EmpApplication.class,args);
    }
}

修改父工程pom文件

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>cn.jinzhu</groupId>
    <artifactId>System-cold</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>emp-service</module>
        <module>dept-service</module>
        <module>common-pojo</module>
        <module>common-untils</module>
        <module>feign-api</module>
    </modules>
<!--  spring-boot-starter-parent父依赖  -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.13</version>
    </parent>


    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot-starter-web.version>3.3.13</spring-boot-starter-web.version>
        <mybatis-plus.version>3.5.7</mybatis-plus.version>
        <mysql.version>8.0.33</mysql.version>
        <lombok.version>1.18.22</lombok.version>

        <spring-cloud.version>2023.0.1</spring-cloud.version>
        <spring-cloud-alibaba-version>2023.0.1.0</spring-cloud-alibaba-version>



    </properties>

    <!--  引入共有的依赖  -->
    <dependencies>
        <!--springboot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring-boot-starter-web.version}</version>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
    </dependencies>

    <!-- 管理依赖版本  -->
    <dependencyManagement>
        <dependencies>
            <!--mysql-->
            <dependency>
                <groupId>com.mysql</groupId>
                <artifactId>mysql-connector-j</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>

            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--nacos-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>
</project>

问题:只引入SpringCloudAlibaba不引入SpringCloud就无法引入Feign依赖

Spring Cloud Alibaba是对Spring Cloud生态的扩展,并非独立替代品;它需与Spring Cloud基础组件协同工作,Feign的注解解析、HTTP请求模板化等核心能力需通过spring-cloud-starter-openfeign提供,如果仅引入Spring Cloud Alibaba而不添加Spring Cloud相关依赖,会导致Feign无法被正确加载或调用

创建feign-api模块

修改pom文件引入依赖

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>cn.jinzhu</groupId>
        <artifactId>System-cold</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>feign-api</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!--feign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- 负载均衡器 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
        <!--httpClient的依赖 -->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>
        <!--common-pojo-->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>common-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
            <!-- 模块内部使用,不会传递给其他依赖 -->
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>

问题:只引入spring-cloud-starter-openfeign,不引入spring-cloud-starter-loadbalancer,测试时控制台报错

在Spring Cloud项目中仅引入spring-cloud-starter-openfeign而未添加spring-cloud-starter-loadbalancer时,控制台会报错No Feign Client for loadBalancing defined,这是因为自Spring Cloud Hoxton.M2版本后,Feign默认移除了Ribbon依赖,转而使用spring-cloud-loadbalancer实现客户端负载均衡

创建包,创建DeptClient接口

kotlin 复制代码
package cn.jinzhu.client;

import cn.jinzhu.pojo.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@FeignClient("deptservice")
public interface DeptClient {
    @GetMapping("/depts/{id}")
    Result queryDeptSimpleById(@PathVariable Integer id);
}

操作dept-service模块

修改pom文件引入依赖

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>cn.jinzhu</groupId>
        <artifactId>System-cold</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>dept-service</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!--mysql-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--common-pojo-->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>common-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--common-utils-->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>common-untils</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--feign-api-->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>feign-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>


</project>

修改application.yml配置文件

yaml 复制代码
server:
  port: 8080
spring:
  application:
    name: deptservice
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/spring_school
    username: root
    password: 123456
  cloud:
    nacos:
      server-addr: localhost:8848
      # Nacos 服务器启用了认证
      username: nacos  # 默认用户名
      password: nacos  # 默认密码
      discovery:
        cluster-name: SZ # 集群名称
        ephemeral: true # 配置是否注册为临时服务,默认是true即临时服务
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true # 开启驼峰命名
logging:
  level:
    com.he: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS

操作emp-service模块

修改pom文件引入依赖

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>cn.jinzhu</groupId>
        <artifactId>System-cold</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>emp-service</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--common-pojo-->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>common-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--     common-untils       -->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>common-untils</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--feign-api-->
        <dependency>
            <groupId>cn.jinzhu</groupId>
            <artifactId>feign-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

修改application.yml配置文件

yaml 复制代码
server:
  port: 8081
spring:
  application:
    name: empservice
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/spring_school
    username: root
    password: 123456
  cloud:
    nacos:
      server-addr: localhost:8848
      # Nacos 服务器启用了认证
      username: nacos  # 默认用户名
        password: nacos  # 默认密码
      discovery:
        cluster-name: SZ # 集群名称
        ephemeral: true # 配置是否注册为临时服务,默认是true即临时服务
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true # 开启驼峰命名
logging:
  level:
    com.he: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
feign:
  client:
    config:
      default: # default全局的配置
        loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息
  httpclient:
    enabled: true # 开启feign对HttpClient的支持
    max-connections: 200 # 最大的连接数
    max-connections-per-route: 50 # 每个路径的最大连接数
deptservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
ribbon:
  eager-load:
    enabled: true # 开启饥饿加载,默认是false即懒加载
    clients: deptservice    

修改EmpApplication启动类

java 复制代码
package cn.jinzhu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableFeignClients(clients = {Deprecated.class})
public class EmpApplication {
    public static void main(String[] args) {
        SpringApplication.run(EmpApplication.class,args);
    }
}

修改EmpServiczeImpl类

scss 复制代码
@Service
public class EmpServiczeImpl extends ServiceImpl<EmpMapper, Emp> implements EmpService {
    @Autowired
    ObjectMapper objectMapper;

    @Autowired
    EmpMapper empMapper;

    @Autowired
    private DeptClient deptClient;

    // 根据信息分页查询
    @Cacheable(cacheNames = "empsList",key = "#empSearchDto.hashCode()" )
    public PageBean queryByInfo(EmpSearchDto empSearchDto) {
        // 创建查询条件
        LambdaQueryWrapper<Emp> queryWrapper = new LambdaQueryWrapper();
        queryWrapper.like(StringUtils.hasLength(empSearchDto.getName()),Emp::getName, empSearchDto.getName())
                .eq(empSearchDto.getGender()!=null,Emp::getGender, empSearchDto.getGender())
                .ge(empSearchDto.getBegin()!=null,Emp::getEntryDate, empSearchDto.getBegin())
                .le(empSearchDto.getEnd()!=null,Emp::getEntryDate, empSearchDto.getEnd());
        // 创建分页条件
        if (empSearchDto.getPage() == null) {
            empSearchDto.setPage(1);
        }
        if (empSearchDto.getPageSize() == null) {
            empSearchDto.setPageSize(5);
        }
        Page<Emp> pageInfo = new Page<>(empSearchDto.getPage(), empSearchDto.getPageSize());
        // 执行查询
        Page<Emp> empPage = empMapper.selectPage(pageInfo, queryWrapper);
        // 为每个员工获取对应的部门信息
        List<Emp> empList = empPage.getRecords().stream().map(emp -> {
            // 调用Feign客户端获取部门信息
            Result deptResult = deptClient.queryDeptSimpleById(emp.getDeptId());
            if (deptResult.getCode() == 1) {
                // 假设员工实体中有部门名称字段 手动转换为部门实体
                Object data = deptResult.getData();
                DeptSimpleDto dept = objectMapper.convertValue(data, DeptSimpleDto.class);
                emp.setDeptSimple(dept);
            }
            return emp;
        }).collect(Collectors.toList());
        // 封装数据
        PageBean pageBean = new PageBean(empPage.getTotal(), empList);
        // 返回数据
        return pageBean;
    }

}

启动测试

启动nacos

复制代码
startup.cmd -m standalone

启动EmptApplication

启动DeptApplication

sql 复制代码
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp`  (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID,主键',
  `username` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '用户名',
  `password` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '123456' COMMENT '密码',
  `name` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '姓名',
  `gender` tinyint UNSIGNED NOT NULL COMMENT '性别, 1:男, 2:女',
  `phone` char(11) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '手机号',
  `job` tinyint UNSIGNED NULL DEFAULT NULL COMMENT '职位, 1 班主任, 2 讲师 , 3 学工主管, 4 教研主管, 5 咨询师',
  `salary` int UNSIGNED NULL DEFAULT NULL COMMENT '薪资',
  `image` varchar(300) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '头像',
  `entry_date` date NULL DEFAULT NULL COMMENT '入职日期',
  `dept_id` int UNSIGNED NULL DEFAULT NULL COMMENT '部门ID',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `username`(`username` ASC) USING BTREE,
  UNIQUE INDEX `phone`(`phone` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 57 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '员工表' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES (2, 'songjiang', '123456', '宋江', 1, '13309090002', 2, 19000, '01.png', '2015-01-01', 2, '2023-10-20 16:35:33', '2023-10-20 16:35:37');
INSERT INTO `emp` VALUES (3, 'yucengdong', '123456', '余承东', 1, '13309090003', 1, 28900, '01.png', '2008-05-01', 1, '2025-08-02 16:09:25', '2025-08-02 16:09:25');
INSERT INTO `emp` VALUES (8, 'likui', '123456', '李逵', 1, '13309090008', 1, 15800, '01.png', '2014-11-09', 1, '2023-10-20 16:35:33', '2023-10-20 16:35:49');
INSERT INTO `emp` VALUES (10, 'linchong', '123456', '林冲', 1, '13309090010', 1, 5000, '01.png', '2013-09-05', 1, '2023-10-20 16:35:33', '2023-10-20 16:35:53');
INSERT INTO `emp` VALUES (11, 'huyanzhuo', '123456', '呼延灼', 1, '13309090011', 2, 11700, '01.png', '2007-02-01', 2, '2023-10-20 16:35:33', '2023-10-20 16:35:55');
INSERT INTO `emp` VALUES (12, 'xiaoliguang', '123456', '小李广', 1, '13309090012', 2, 12000, '01.png', '2008-08-18', 2, '2023-10-20 16:35:33', '2023-10-20 16:35:57');
INSERT INTO `emp` VALUES (13, 'yangzhi', '123456', '杨志', 1, '13309090013', 1, 17300, '01.png', '2012-11-01', 1, '2023-10-20 16:35:33', '2023-10-20 16:35:59');
INSERT INTO `emp` VALUES (14, 'shijin', '123456', '史进', 1, '13309090014', 2, 12600, '01.png', '2002-08-01', 2, '2023-10-20 16:35:33', '2023-10-20 16:36:01');
INSERT INTO `emp` VALUES (15, 'sunerniang', '123456', '孙二娘', 2, '13309090015', 2, 12900, '01.png', '2011-05-01', 2, '2023-10-20 16:35:33', '2023-10-20 16:36:03');
INSERT INTO `emp` VALUES (16, 'luzhishen', '123456', '鲁智深', 1, '13309090016', 2, 11600, '01.png', '2010-01-01', 2, '2023-10-20 16:35:33', '2023-10-20 16:36:05');
INSERT INTO `emp` VALUES (17, 'liying', '12345678', '李应', 1, '13309090017', 1, 15800, '01.png', '2015-03-21', 1, '2023-10-20 16:35:33', '2023-10-20 16:36:07');
INSERT INTO `emp` VALUES (18, 'shiqian', '123456', '时迁', 1, '13309090018', 2, 10200, '01.png', '2015-01-01', 2, '2023-10-20 16:35:33', '2023-10-20 16:36:09');
INSERT INTO `emp` VALUES (19, 'gudasao', '123456', '顾大嫂', 2, '13309090019', 2, 10500, '01.png', '2008-01-01', 2, '2023-10-20 16:35:33', '2023-10-20 16:36:11');
INSERT INTO `emp` VALUES (20, 'ruanxiaoer', '123456', '阮小二', 1, '13309090020', 2, 10800, '01.png', '2018-01-01', 2, '2023-10-20 16:35:33', '2023-10-20 16:36:13');
INSERT INTO `emp` VALUES (21, 'ruanxiaowu', '123456', '阮小五', 1, '13309090021', 5, 5200, '01.png', '2015-01-01', 3, '2023-10-20 16:35:33', '2023-10-20 16:36:15');
INSERT INTO `emp` VALUES (22, 'ruanxiaoqi', '123456', '阮小七', 1, '13309090022', 5, 5500, '01.png', '2016-01-01', 3, '2023-10-20 16:35:33', '2023-10-20 16:36:17');
INSERT INTO `emp` VALUES (23, 'ruanji', '123456', '阮籍', 1, '13309090023', 5, 5800, '01.png', '2012-01-01', 3, '2023-10-20 16:35:33', '2023-10-20 16:36:19');
INSERT INTO `emp` VALUES (24, 'tongwei', '123456', '童威', 1, '13309090024', 5, 5000, '01.png', '2006-01-01', 3, '2023-10-20 16:35:33', '2023-10-20 16:36:21');
INSERT INTO `emp` VALUES (25, 'tongmeng', '123456', '童猛', 1, '13309090025', 5, 4800, '01.png', '2002-01-01', 3, '2023-10-20 16:35:33', '2023-10-20 16:36:23');
INSERT INTO `emp` VALUES (26, 'yanshun', '123456', '燕顺', 1, '13309090026', 5, 5400, '01.png', '2011-01-01', 3, '2023-10-20 16:35:33', '2023-11-08 22:12:46');
INSERT INTO `emp` VALUES (27, 'lijun', '123456', '李俊', 1, '13309090027', 2, 6600, '8.png', '2004-01-01', 2, '2023-10-20 16:35:33', '2023-11-16 17:56:59');
INSERT INTO `emp` VALUES (28, 'lizhong', '123456', '李忠', 1, '13309090028', 5, 5000, '6.png', '2007-01-01', 3, '2023-10-20 16:35:33', '2023-11-17 16:34:22');
INSERT INTO `emp` VALUES (30, 'liyun', '123456', '李云', 1, '13309090030', NULL, NULL, '01.png', '2020-03-01', NULL, '2023-10-20 16:35:33', '2023-10-20 16:36:31');
INSERT INTO `emp` VALUES (36, 'linghuchong', '123456', '令狐冲', 1, '18809091212', 2, 6800, '1.png', '2023-10-19', 2, '2023-10-20 20:44:54', '2023-11-09 09:41:04');
INSERT INTO `emp` VALUES (38, 'mahuateng', '123456', '马化腾', 2, '22222', 5, 295000, '5.png', NULL, NULL, '2025-07-21 20:28:18', '2025-07-21 20:28:18');
INSERT INTO `emp` VALUES (47, 'leijun', '123456', '雷军', 1, '1330901', 4, 25000, NULL, NULL, NULL, '2025-07-21 20:33:23', '2025-07-21 20:33:23');
INSERT INTO `emp` VALUES (48, 'xuezhiqian', '1236', '薛之谦', 2, '13309001', 6, 200, '1.png', '2000-01-01', 2, NULL, '2025-07-21 20:45:38');
INSERT INTO `emp` VALUES (49, 'linjunjie', '123456', '林俊杰', 1, '133090', 3, 180, '02.png', '2015-01-01', 4, NULL, '2025-07-21 21:36:34');
INSERT INTO `emp` VALUES (56, 'caocao', '1234', '曹操', 1, '1330909', 1, NULL, '01.png', '2015-01-01', 3, '2025-08-02 16:06:41', '2025-08-02 16:06:41');

SET FOREIGN_KEY_CHECKS = 1;
sql 复制代码
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept`  (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID, 主键',
  `name` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '部门名称',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `name`(`name` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '部门表' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES (6, '大部', '2025-07-21 10:18:52', '2025-07-21 14:58:03');
INSERT INTO `dept` VALUES (15, '行政部', '2023-11-30 20:56:37', '2023-11-30 20:56:37');
INSERT INTO `dept` VALUES (17, '武装部', '2025-07-18 23:08:08', '2025-07-18 23:08:08');
INSERT INTO `dept` VALUES (18, '部门', '2025-07-21 14:55:24', '2025-07-21 14:55:24');
INSERT INTO `dept` VALUES (20, '后勤部', '2025-07-21 22:14:41', '2025-07-21 22:14:41');
INSERT INTO `dept` VALUES (21, '员工部', '2025-07-21 22:15:09', '2025-07-21 22:15:09');
INSERT INTO `dept` VALUES (32, '教师部', '2023-09-25 09:47:40', '2023-11-30 21:26:24');
INSERT INTO `dept` VALUES (33, '师长', '2023-09-25 09:47:40', '2023-11-30 21:26:24');
INSERT INTO `dept` VALUES (35, '装甲部', '2025-08-02 13:35:41', '2025-08-02 13:35:41');

SET FOREIGN_KEY_CHECKS = 1;
相关推荐
麦兜*9 小时前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
熙客11 小时前
SpringCloud概述
java·spring cloud·微服务
一又四分之一.1 天前
spring、springboot、springCloud
spring boot·spring·spring cloud
lllsure3 天前
【Docker】镜像
java·spring cloud·docker
T_Ghost3 天前
SpringCloud微服务网关Gateway
spring cloud·微服务·gateway
hzzzzzo04 天前
微服务核心组件实战:Nacos 与 Ribbon 的应用
spring cloud·微服务·ribbon·nacos·架构
Gu Gu Study4 天前
Spring运行程序RabbitMQ并没有自动创建队列的问题解决
java·spring cloud·rabbitmq
麦兜*4 天前
Docker 部署 MongoDB:单节点与副本集的最佳实践
java·spring boot·mongodb·spring cloud·docker·容器·maven
曾经的三心草4 天前
springcloud二-Sentinel
spring·spring cloud·sentinel
齐 飞4 天前
Spring Cloud Alibaba快速入门03-OpenFeign进阶用法
spring boot·后端·spring cloud