6.15

SpringBoot实体类、分页配置与基础CRUD测试

一、教学目标

  1. 根据数据库数据表结构,创建SpringBoot对应实体类,结合Lombok简化代码。

  2. 完成MyBatis-Plus分页插件配置,实现数据库分页查询功能。

  3. 编写Mapper、Service、Controller三层代码,完成基础CRUD接口开发。

  4. 通过浏览器测试接口,验证数据查询、新增、分页功能正常生效。

二、核心知识点

1. 实体类与Lombok注解:Lombok可通过注解自动生成实体类get/set方法、无参/有参构造、toString方法,消除冗余代码;配合MyBatis-Plus注解可实现实体类与数据库表映射。

2. MyBatis-Plus插件配置:通过配置类注册分页插件,解决SpringBoot项目分页查询失效问题,适配不同数据库分页语法。

三层架构开发:Mapper层负责数据库交互、Service层处理业务逻辑、Controller层接收前端请求、响应数据,职责分层清晰,符合项目开发规范。

常用MP内置方法:MyBatis-Plus封装了selectById、list、page、save等通用CRUD方法,无需手写SQL即可完成基础数据库操作。

三、操作步骤

1. 数据库表准备

基于前期创建的weitoutiao数据库,新建业务数据表(以user用户表为例),包含基础字段:id、用户名、密码、手机号、创建时间、逻辑删除标识deleted,适配yml配置中的逻辑删除规则。

2. 创建项目分层结构

在com.weitoutiao包下,完善项目基础包结构,规范分层开发:

  1. entity:存放数据库对应实体类

  2. mapper:存放数据库操作接口

  3. service:存放业务逻辑接口及实现类

  4. config:存放项目配置类

  5. controller:存放请求控制类

3. 编写数据库实体类(entity)

在entity包下创建User实体类,使用Lombok和MyBatis-Plus注解完成表和字段映射,自动适配驼峰命名、主键自增、逻辑删除配置。

package com.weitoutiao.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import java.util.Date;

// 自动生成get、set、toString、无参构造
@Data
public class User {
    // 主键自增
    @TableId(type = IdType.AUTO)
    private Long id;
    // 用户名
    private String username;
    // 密码
    private String password;
    // 手机号
    private String phone;
    // 创建时间
    private Date createTime;
    // 逻辑删除字段,对应yml配置
    @TableLogic
    private Integer deleted;
}

4. 配置MyBatis-Plus分页插件(config)

在config包下创建MyBatisPlusConfig配置类,注册分页插件,开启分页功能,适配MySQL数据库。

package com.weitoutiao.config;

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();
        // 指定数据库类型为MySQL
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

5. 编写Mapper层接口

在mapper包下创建UserMapper接口,继承BaseMapper,自动继承MP所有通用CRUD方法,无需手动编写SQL。

package com.weitoutiao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.weitoutiao.entity.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
    // 继承BaseMapper后,自带新增、删除、修改、查询、分页等方法
}

6. 编写Service业务层

先创建UserService业务接口,再创建Impl实现类,继承MP通用业务接口,封装业务操作方法。

Service接口:

package com.weitoutiao.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.weitoutiao.entity.User;

public interface UserService extends IService<User> {

}

Service实现类:

package com.weitoutiao.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.weitoutiao.entity.User;
import com.weitoutiao.mapper.UserMapper;
import com.weitoutiao.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

}

7. 编写Controller接口层

在controller包下创建UserController,注入业务层对象,编写查询、分页查询接口,用于前端访问测试。

package com.weitoutiao.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.weitoutiao.entity.User;
import com.weitoutiao.service.UserService;
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 javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {

    // 注入业务层
    @Resource
    private UserService userService;

    // 查询所有用户
    @GetMapping("/list")
    public List<User> getUserList(){
        return userService.list();
    }

    // 分页查询 用户
    @GetMapping("/page/{current}/{size}")
    public IPage<User> getUserPage(@PathVariable Long current, @PathVariable Long size){
        // current:当前页,size:每页条数
        Page<User> page = new Page<>(current,size);
        return userService.page(page);
    }
}

8. 项目启动与接口测试

  1. 启动SpringBoot主程序,确保项目无报错、端口8080正常监听;

  2. 浏览器访问全员查询接口: http://localhost:8080/user/list ,可查询数据库所有用户数据;

  3. 浏览器访问分页接口: http://localhost:8080/user/page/1/5 ,查询第一页、每页5条数据;

  4. 控制台可打印SQL执行日志,验证MyBatis-Plus配置、分页插件、字段映射全部生效。

四、实训总结

本次实训完成了SpringBoot项目完整三层架构搭建,熟练使用Lombok简化实体类开发,掌握MyBatis-Plus分页插件配置方法。无需手写基础SQL,通过MP内置方法快速实现数据查询、分页功能,大幅简化后端开发流程,同时规范了项目分层开发思想,为后续复杂业务接口开发奠定基础。

posted @ 2026-06-18 13:50  裕达  阅读(13)  评论(0)    收藏  举报