• 后端SpringBoot+前端Vue前后端分离的项目(二)


    前言:完成一个列表,实现表头的切换,字段的筛选,排序,分页功能。

    目录

    一、数据库表的设计

    二、后端实现

    环境配置

    model层

     mapper层

    service层

     service层单元测试

    controller层

    三、前端实现

    interface接口

    接口api层

    主要代码

    效果展示


    一、数据库表的设计

    二、后端实现

    环境配置

    引入mybatis-plus依赖

    1. com.baomidou
    2. mybatis-plus-boot-starter
    3. 3.5.3

    model层

    1. package com.mrjj.java.model;
    2. import com.baomidou.mybatisplus.annotation.IdType;
    3. import com.baomidou.mybatisplus.annotation.TableId;
    4. import com.baomidou.mybatisplus.annotation.TableName;
    5. import lombok.AllArgsConstructor;
    6. import lombok.Data;
    7. import lombok.NoArgsConstructor;
    8. @Data
    9. @NoArgsConstructor
    10. @AllArgsConstructor
    11. @TableName("merchandise_details")
    12. public class MerchandiseDetails {
    13. @TableId(type= IdType.AUTO)
    14. public int id;
    15. public String salesPlatform;
    16. public String merchandiseName;
    17. public int freightCharge;
    18. public String notes;
    19. }

     mapper

    1. package com.mrjj.java.mapper;
    2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    3. import com.mrjj.java.model.MerchandiseDetails;
    4. import org.apache.ibatis.annotations.Mapper;
    5. @Mapper
    6. public interface MerchandiseDetailsMapper extends BaseMapper {
    7. }

    service层

    MerchandiseDetailsService文件

    1. package com.mrjj.java.service;
    2. import com.baomidou.mybatisplus.extension.service.IService;
    3. import com.mrjj.java.model.MerchandiseDetails;
    4. public interface MerchandiseDetailsService extends IService {
    5. }
    1. package com.mrjj.java.service.impl;
    2. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    3. import com.mrjj.java.mapper.MerchandiseDetailsMapper;
    4. import com.mrjj.java.model.MerchandiseDetails;
    5. import com.mrjj.java.service.MerchandiseDetailsService;
    6. import org.springframework.stereotype.Service;
    7. @Service("MerchandiseDetailsService")
    8. public class MerchandiseDetailsServiceImpl extends ServiceImpl implements MerchandiseDetailsService {
    9. }

     service层单元测试

    1. package com.mrjj.java.service;
    2. import com.mrjj.java.model.MerchandiseDetails;
    3. import org.junit.jupiter.api.Test;
    4. import org.springframework.boot.test.context.SpringBootTest;
    5. import org.springframework.transaction.annotation.Transactional;
    6. import javax.annotation.Resource;
    7. import java.util.List;
    8. @SpringBootTest
    9. @Transactional
    10. public class MerchandiseDetailsServiceTest {
    11. @Resource
    12. MerchandiseDetailsService merchandiseDetailsService;
    13. @Test
    14. public void getAll() {
    15. List list = merchandiseDetailsService.list();
    16. System.out.println(list);
    17. }
    18. @Test
    19. public void update() {
    20. MerchandiseDetails change = new MerchandiseDetails(30, "淘宝", "天堂伞", 16, "质量好");
    21. merchandiseDetailsService.updateById(change);
    22. }
    23. }

    controller层

    1. package com.mrjj.java.controller;
    2. import com.mrjj.java.model.MerchandiseDetails;
    3. import com.mrjj.java.model.Result;
    4. import com.mrjj.java.service.MerchandiseDetailsService;
    5. import org.springframework.web.bind.annotation.*;
    6. import javax.annotation.Resource;
    7. import java.util.List;
    8. @RestController
    9. @RequestMapping("/MerchandiseDetails")
    10. public class MerchandiseDetailsController {
    11. @Resource
    12. MerchandiseDetailsService merchandiseDetailsService;
    13. @GetMapping
    14. public Result> listMerchandiseDetails() {
    15. return Result.success(merchandiseDetailsService.list());
    16. }
    17. @PutMapping
    18. public Result updateMerchandiseDetails(@RequestBody MerchandiseDetails merchandiseDetails) {
    19. boolean result = merchandiseDetailsService.updateById(merchandiseDetails);
    20. if (result) {
    21. return Result.success("更新商品详细信息成功!");
    22. } else {
    23. return Result.fail(210, "更新商品详细信息失败", merchandiseDetails);
    24. }
    25. }
    26. }

    三、前端实现

    interface接口

    1. export interface MerchandiseDetails {
    2. id: number;
    3. salesPlatform: string;
    4. merchandiseName: string;
    5. freightCharge: number;
    6. notes: string;
    7. }

    接口api层

    1. import request from '../request'
    2. import axios, { type AxiosPromise } from 'axios'
    3. import type { MerchandiseDetails } from '@/types/merchandises_details/types'
    4. const instance = axios.create({
    5. baseURL: '/merchandiseDetails',
    6. timeout: 30000,
    7. headers: { 'Content-Type': 'application/json;charset=utf-8' }
    8. })
    9. export default instance
    10. export function listMerchandiseDetailsApi(): AxiosPromise<MerchandiseDetails[]> {
    11. return request({
    12. url: '/merchandiseDetails',
    13. method: 'get',
    14. })
    15. }
    16. export function updateMerchandiseDetailsApi(data: MerchandiseDetails) {
    17. return request({
    18. url: '/merchandiseDetails',
    19. method: 'put',
    20. data: data,
    21. })
    22. }

    主要代码