Springboot整合MyBatis实现数据库操作

第一步: 创建实体类 创建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": "请求成功"
}
控制台打印数据如下
数据库查询结果
相关推荐
Java爱好狂.2 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
zyseo84 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
xiaogai_gai6 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
数据工匠老o6 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
这个DBA有点耶7 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构
顽疲7 小时前
java springboot vue 养老系统源码详解:请假 care_leave 销假与床位停费日扣实践
java·vue.js·spring boot
用户6279947182628 小时前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库
数据库小学妹8 小时前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
Java_AI工程师8 小时前
Spring4 / SpringBoot1.x 老项目想接入 AI?不用升级框架!3 套无痛落地方案
java·人工智能·spring boot
一个天蝎座的程序猿8 小时前
为了给报表提速,我把金仓KES的列存储折腾了个遍:聊聊KES的技术能力
数据库