5.准备包结构
在 qk-management 模块下,创建包结构 controller、service、mapper。

并准备部门管理的基础代码结构:
5.1.DeptController
控制器,这是访问请求的路由入口。
java
package com.cghbh.controller;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DeptController {
}5.2.DeptService
这里的Service需要是Interface类,留着让后面的实现类去实现里面的方法,实现代码的解耦。
java
package com.cghbh.service;
public interface DeptService {
}5.3.DeptServiceImpl
在service所在的目录新建一个impl包,用来存放外面Service对应的实现类。
需要在实现类上面增加@Service,将当前的Service注入到依赖池中。
java
package com.cghbh.service.impl;
import com.cghbh.service.DeptService;
import org.springframework.stereotype.Service;
@Service
public class DeptServiceImpl implements DeptService {
}5.4.DeptMapper
需要在Mapper的类上面增加@Mapper的注解。这也是一个interface类!!!
java
package com.cghbh.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cghbh.entity.Dept;
@Mapper
public interface DeptMapper extends BaseMapper<Dept> {
}企业级开发规范提示!!!
- 不要在 Mapper 接口上加
@Mapper,优先使用@MapperScan批量扫描- 在 SpringBoot 启动类添加:
@MapperScan("com.cghbh.mapper"),注意包路径 - 一次配置,包下所有 Mapper 全部注册为 Spring Bean,消除每个 Mapper 写
@Mapper的重复代码 - 导入包:
org.mybatis.spring.annotation.MapperScan
- 在 SpringBoot 启动类添加:
小提示:
@Mapper适合少量 Mapper 的小 Demo;企业项目统一用@MapperScan。
5.5.启动类QkStartApplication
启动类一定要放在com.cghbh包下,也就是和controller、mapper、service同级目录下,因为默认规则:只会扫描【启动类所在包,以及它下面所有子包】(@SpringBootApplication 自带 @ComponentScan),如果你把 Controller 放到 com.test.controller 哪怕类上加了@RestController,Spring 不会把它变成 Bean,接口 404、注入全部失效!

代码示例如下:
java
package com.cghbh;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class QkStartApplication {
public static void main(String[] args) {
SpringApplication.run(QkStartApplication.class, args);
}
}