第一步: 创建实体类 创建entity/Admin.java
package com.longchi.entity;
/**
* 管理员信息
*/
public class Admin {
private Integer id;
private String username;
private String password;
private String name;
private String phone;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
第二步: 创建 xml 文件
在 resources 目录下创建 mapper 文件夹,
在 mapper 目录下创建 AdminMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.longchi.mapper.AdminMapper">
<select id="selectAll" resultType="com.longchi.entity.Admin">
select * from `admin` order by id desc
</select>
</mapper>
以上mapper 里面基本的文件格式, mapper 标签上面是固定的, 所有的 mapper 文件都是这样的, namespace 跟你的接口层所映射的
AdminMapper.xml 与 AdminMapper.java 是一一对应的
去 application.yml配置扫描导包(在主类或者说是 启动类)
@MapperScan("com.longchi.mapper")
第三步: 我们在 com.longchi 目录下新建 mapper 这个包, 在 mapper 这个包里面创建一个 interface 文件,AdminMapper.xml 与 AdminMapper.java 是一一对应的
mapper/AdminMapper.java
package com.longchi.mapper;
import com.longchi.entity.Admin;
import java.util.List;
/**
* 定义 Mapper 接口的方法
*/
public interface AdminMapper {
List<Admin> selectAll();
}
AdminMapper.java 定义接口方法 比如 selectAll()
AdminMapper.xml 定义接口的实现方法
比如 select * from `admin` order by id desc
AdminMapper.xml 与 AdminMapper.java 是一一对应的
第四步: 扫描接口(去主类里面配置)
HotelApplication.java
package com.longchi;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.longchi.mapper")
public class HotelApplication {
public static void main(String[] args) {
SpringApplication.run(HotelApplication.class, args);
}
}
第五步: 我们去service 层去定义一个方法, 在 service 里面去调用 Mapper,在 Adminservice.java 文件 添加如下代码
package com.longchi.service;
import com.longchi.entity.Admin;
import com.longchi.exception.CustomerException;
import com.longchi.mapper.AdminMapper;
import org.springframework.stereotype.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import javax.annotation.Resource;
import java.util.List;
@Service
public class AdminService {
@Resource
AdminMapper adminMapper;
public String admin(String name) {
if ("admin".equals(name)) {
return "admin";
} else {
throw new CustomerException("账号错误");
}
}
public List<Admin> selectAll() {
return adminMapper.selectAll();
}
// public PageInfo<Admin> selectPage(Integer pageNum, Integer pageSize) {
// // 开启分页查询
// PageHelper.startPage(pageNum,pageSize);
// List<Admin> adminList = adminMapper.selectAll();
// return PageInfo.of(adminList);
// }
}
通过 @Resource 去导入 AdminMapper,adminMapper对外提供了一个selectAll()接口,然后通过 adminMapper.selectAll(); 去查询数据
在 service 里面去调用 Mapper, 在 service 里面有了数据查询方法 selectAll()方法之后,再交给 controller 层
第六步: 我们去 controller 层去创建 AdminController.java 文件
package com.longchi.controller;
import com.longchi.common.Result;
import com.longchi.entity.Admin;
import com.longchi.mapper.AdminMapper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @Description com.longchi.controller
* @Author zengguoqing
* @Date 2026-03-18 21:27
**/
// 暴露查询接口
@RestController
@RequestMapping("/admin") // 添加统一前缀
public class AdminController {
@Resource
AdminMapper adminMapper;
@GetMapping("/selectAll") // 完整的请求路径 http://ip:port/admin/selectAll
public Result selectAll() {
List<Admin> adminList = adminMapper.selectAll();
return Result.success(adminList);
}
/**
* 分页查询
* pageNum: 当前的页码
* pageSize: 每页的个数
* */
// @GetMapping("/selectPage")
// public Result selectPage(@RequestParam(defaultValue="1") Integer pageNum, @RequestParam(defaultValue="10") Integer pageSize) {
// adminService.selectPage(pageNum,pageSize);
// return Result.success(); // 返回的分页的对象
// }
}
在每一个实体类 controller 里面添加一个统一的前缀 @RequestMapping("/admin") 跟我们实体类名字是一致的,这个接口的接口的完整的请求路径: http://ip:port/admin/selectAll
在终端执行 mvn spring-boot:run
访问 http://localhost:9999/admin/selectAll 得到如下数据
{
"code": "200",
"data": [
{
"id": 3,
"username": "mary",
"password": "mary",
"name": "管理员",
"phone": "15300935233",
"email": "2570650096@qq.com"
},
{
"id": 1,
"username": "admin",
"password": "admin",
"name": "管理员",
"phone": "18017927192",
"email": "2570650096@qq.com"
}
],
"msg": "请求成功"
}

控制台打印数据如下

数据库查询结果
