项目结构
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接口。
)
下面以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的后端开发框架搭建。接下来可以继续开发其他模块或优化现有功能。