Skip to content

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> {
}

企业级开发规范提示!!!

  1. 不要在 Mapper 接口上加 @Mapper,优先使用 @MapperScan 批量扫描
    • 在 SpringBoot 启动类添加:@MapperScan("com.cghbh.mapper"),注意包路径
    • 一次配置,包下所有 Mapper 全部注册为 Spring Bean,消除每个 Mapper 写@Mapper的重复代码
    • 导入包:org.mybatis.spring.annotation.MapperScan

小提示:@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);
    }
}