【SpringBoot】基于MyBatis-Plus的接口搭建

项目结构

src/main/java
└── com.morningbox
    ├── config          // 配置类
    ├── controller      // 控制器
    ├── service         // 服务层
    │   ├── impl        // 服务实现类
    ├── mapper          // Mapper接口
    ├── model           // 实体类
    ├── dto             // 数据传输对象
    ├── exception       // 自定义异常
    ├── utils           // 工具类
    └── MorningBoxApplication.java // 启动类

src/main/resources
├── application.yml     // 配置文件
└── static              // 静态资源

Mapper接口

前面已经完成了数据库和实体类的创建,现在需要为每个实体类创建对应的Mapper接口。

(文章:【SpringBoot】基于MyBatis-Plus的实体类(Model)搭建https://blog.csdn.net/aystl_gss/article/details/145953598?sharetype=blogdetail&sharerId=145953598&sharerefer=PC&sharesource=aystl_gss&spm=1011.2480.3001.8118

) 

下面以UserMapper和OrderMapper为例,其他接口参考下述格式:

UserMapper.java

package com.example.morningboxspring.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.morningboxspring.model.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

OrderMapper.java

package com.morningboxspring.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.morningbox.model.Order;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface OrderMapper extends BaseMapper<Order> {
}

完成接口,接下来是对服务层(Service)的搭建...

服务层Service

MyBatis-Plus提供了Iservice接口和ServiceImpl实现类,可以快速实现CRUD操作。下面以UserService和OrderService为例:

UserService.java

package com.example.morningboxspring.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.morningboxspring.model.User;

public interface UserService extends IService<User> {
}

UserServiceImpl.java

package com.example.morningboxspring.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.morningboxspring.mapper.UserMapper;
import com.example.morningboxspring.model.User;
import com.example.morningboxspring.service.UserService;
import org.springframework.stereotype.Service;

/**
 * 功能:UserServiceImpl
 * 作者:爱因斯坦乐
 * 日期:2025/3/1
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

OrderService.java

package com.example.morningboxspring.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.morningboxspring.model.Order;

public interface OrderService extends IService<Order> {
}

OrderServiceImpl.java

package com.example.morningboxspring.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.morningboxspring.mapper.OrderMapper;
import com.example.morningboxspring.model.Order;
import com.example.morningboxspring.service.OrderService;
import org.springframework.stereotype.Service;

/**
 * 功能:OrderServiceImpl
 * 作者:爱因斯坦乐
 * 日期:2025/3/1
 */
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
}

其他Service接口和实现类请参考上述格式完成。

控制层(Controller)

本层提供API接口,下面以UserController和OrderController为例:

UserController.java

package com.example.morningboxspring.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.morningboxspring.service.UserService;
import com.example.morningboxspring.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
/**
 * 功能:UserController
 * 作者:爱因斯坦乐
 * 日期:2025/3/1
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/{userId}")
    public User getUserById(@PathVariable Long userId) {
        return userService.getById(userId);
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.list();
    }

    @PostMapping
    public boolean createUser(@RequestBody User user) {
        return userService.save(user);
    }

    @PutMapping
    public boolean updateUser(@RequestBody User user) {
        return userService.updateById(user);
    }

    @DeleteMapping("/{userId}")
    public boolean deleteUser(@PathVariable Long userId) {
        return userService.removeById(userId);
    }

    @GetMapping("/search")
    public List<User> searchUsers(@RequestParam String keyword) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("nickname", keyword)
                .or()
                .like("phone", keyword);
        return userService.list(queryWrapper);
    }
}

OrderController.java

package com.example.morningboxspring.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.morningboxspring.model.Order;
import com.example.morningboxspring.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
/**
 * 功能:OrderController
 * 作者:爱因斯坦乐
 * 日期:2025/3/1
 */
@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    private OrderService orderService;

    @GetMapping("/{orderId}")
    public Order getOrderById(@PathVariable Long orderId) {
        return orderService.getById(orderId);
    }

    @GetMapping
    public List<Order> getAllOrders() {
        return orderService.list();
    }

    @PostMapping
    public boolean createOrder(@RequestBody Order order) {
        return orderService.save(order);
    }

    @PutMapping
    public boolean updateOrder(@RequestBody Order order) {
        return orderService.updateById(order);
    }

    @DeleteMapping("/{orderId}")
    public boolean deleteOrder(@PathVariable Long orderId) {
        return orderService.removeById(orderId);
    }

    @GetMapping("/user/{userId}")
    public List<Order> getOrdersByUserId(@PathVariable Long userId) {
        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id", userId);
        return orderService.list(queryWrapper);
    }
}

以上便完成了接口的搭建

启动类

运行MorningBoxSpringApplication.java

测试API

使用Postman或浏览器测试API:
- **获取用户信息**:`GET http://localhost:8080/user/{userId}`
- **创建用户**:`POST http://localhost:8080/user`
- **获取用户订单**:`GET http://localhost:8080/order/user/{userId}`
- **创建订单**:`POST http://localhost:8080/order`


 后续开发


- **完善其他模块**:订阅、配送、评价等。
- **添加缓存**:使用Redis缓存热点数据。
- **部署项目**:使用Docker部署到云服务器。

通过以上步骤,已经完成了基于MyBatis-Plus的后端开发框架搭建。接下来可以继续开发其他模块或优化现有功能。