vue + springboot备忘录后端

简介: vue + springboot备忘录后端

vue + springboot备忘录

简介

本文讲解如何使用,vue+springboot制作备忘录系统,前端文章作者已经写好了,本文主要讲解如何制作后端。

然后前端部分我已经写完了,这里就是前端的部分的文章vue创建备忘录

在这个备忘录系统中,我主要制作了,备忘录的分类查询,备忘录的增加,删除,修改,根据id进行查询,查询全部功能,还有根据是否完成的情况,进行查询,查询的过程中还根据笔记的创建时间进行排序,这样可以让快结束的放到上面,然后给用户一种警示的效果。

创建项目

新建项目

创建数据库

通过这个数据库就大概知道了这个,项目的这个逻辑大概是一个什么样子,首先是用户登录,登录成功之后,会显示他自己的备忘录,然后备忘录中的信息,还会按照不通类型进行分类处理。

创建user表

创建用户表,user,这个表中存放的是,用户的id,username,password还有用户的头像。

user表的sql语句

/*
 Navicat MySQL Data Transfer
 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 80028
 Source Host           : localhost:3306
 Source Schema         : todolist
 Target Server Type    : MySQL
 Target Server Version : 80028
 File Encoding         : 65001
 Date: 17/02/2023 11:41:26
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '用户的id',
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户名字',
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户密码',
  `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户的头像',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'lihua', '123456', 'https://pic2.zhimg.com/v2-dcc1ea1a8b0c398c826ef9469d1e8b96.jpg');
INSERT INTO `user` VALUES (2, 'zhangsan', '123456', 'https://pic2.zhimg.com/v2-98974f8aaa0c9bf54ca16fac5c3fc4b5_r.jpg');
INSERT INTO `user` VALUES (3, 'lihua2', '123456', 'https://pic4.zhimg.com/v2-797973e16edcd0ccaab44cfbfa08d2d3_r.jpg');
INSERT INTO `user` VALUES (4, 'lexian', '1111', 'https://pic3.zhimg.com/v2-d6ddf0128212235dddf76df7f4383f53.jpg');
INSERT INTO `user` VALUES (5, 'lexian1', '1111', 'https://pic4.zhimg.com/v2-797973e16edcd0ccaab44cfbfa08d2d3_r.jpg');
INSERT INTO `user` VALUES (6, 'sdadasd', '1111', 'https://pic2.zhimg.com/v2-fc348d5e926116782149d2151dc09834.jpg');
INSERT INTO `user` VALUES (7, 'henl', '111', 'https://pic2.zhimg.com/v2-fc348d5e926116782149d2151dc09834.jpg');
INSERT INTO `user` VALUES (8, 'wwww', '111', 'https://pic4.zhimg.com/v2-797973e16edcd0ccaab44cfbfa08d2d3_r.jpg');
INSERT INTO `user` VALUES (9, 'eee', '111', 'https://pic2.zhimg.com/v2-fc348d5e926116782149d2151dc09834.jpg');
INSERT INTO `user` VALUES (10, '111sss', 'aaa', 'https://pic3.zhimg.com/v2-65020b1231ba55d55ee3d6a29ff3df26_r.jpg');
INSERT INTO `user` VALUES (11, '1111111', '111', 'https://pic2.zhimg.com/v2-fc348d5e926116782149d2151dc09834.jpg');
INSERT INTO `user` VALUES (12, '418564641564', '111', 'https://pic2.zhimg.com/v2-fc348d5e926116782149d2151dc09834.jpg');
SET FOREIGN_KEY_CHECKS = 1;

创建notes表

这个表的目的是存放用户的自己笔记的,这里不仅会记录这个备忘录的内容,创建时间,还有这个备忘录是否完成的情况。

建表sql语句

/*
 Navicat MySQL Data Transfer
 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 80028
 Source Host           : localhost:3306
 Source Schema         : todolist
 Target Server Type    : MySQL
 Target Server Version : 80028
 File Encoding         : 65001
 Date: 17/02/2023 11:40:10
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for notes
-- ----------------------------
DROP TABLE IF EXISTS `notes`;
CREATE TABLE `notes`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'note表的id',
  `rid` int NOT NULL COMMENT '这个笔记是哪个人的',
  `detail` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '笔记的内容',
  `time` datetime NOT NULL COMMENT '笔记的创建时间',
  `type` int NOT NULL COMMENT '笔记的类型',
  `finish` int NOT NULL COMMENT '任务是否完成',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of notes
-- ----------------------------
INSERT INTO `notes` VALUES (4, 2, '我要去跑步', '2023-02-08 02:10:54', 2, 0);
INSERT INTO `notes` VALUES (10, 1, '658848', '2023-02-12 08:00:00', 2, 1);
INSERT INTO `notes` VALUES (12, 1, '56464687487487498', '2023-02-10 08:00:00', 2, 1);
SET FOREIGN_KEY_CHECKS = 1;

type表

这里存放的是用户的,笔记类型与一直对应的解释。

type表建表sql语句

/*
 Navicat MySQL Data Transfer
 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 80028
 Source Host           : localhost:3306
 Source Schema         : todolist
 Target Server Type    : MySQL
 Target Server Version : 80028
 File Encoding         : 65001
 Date: 08/02/2023 00:59:51
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for type
-- ----------------------------
DROP TABLE IF EXISTS `type`;
CREATE TABLE `type`  (
  `typeid` int NOT NULL COMMENT '主键',
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '是什么类型',
  PRIMARY KEY (`typeid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of type
-- ----------------------------
INSERT INTO `type` VALUES (1, '美食');
INSERT INTO `type` VALUES (2, '学习');
SET FOREIGN_KEY_CHECKS = 1;

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.8</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>todolist-back</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>todolist-back</name>
    <description>todolist-back</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

application.yml

server:
  port: 8081
spring:
  datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/todolist?serverTimezone=GMT%2B8&useOldAliasMetadataBehavior=true
      username: root
      password: 123456
mybatis-plus:
  global-config:
    db-config:
      id-type: auto
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

代码

创建统一消息封装内Result

对于统一消息封装类,对返回的消息进行处理,可以使得消息更加的便于查看,与处理。

package com.example.todolistback.common.lang;
import lombok.Data;
import java.io.Serializable;
@Data
public class Result implements Serializable {
    private int code; // 200是正常,非200表示异常
    private String msg;
    private Object data;
    public static Result succ(Object data) {
        return succ(200, "操作成功", data);
    }
    public static Result succ(int code, String msg, Object data) {
        Result r = new Result();
        r.setCode(code);
        r.setMsg(msg);
        r.setData(data);
        return r;
    }
    public static Result fail(int i, String msg) {
        return fail(400, msg, null);
    }
    public static Result fail(String msg, Object data) {
        return fail(400, msg, data);
    }
    public static Result fail(int code, String msg, Object data) {
        Result r = new Result();
        r.setCode(code);
        r.setMsg(msg);
        r.setData(data);
        return r;
    }
}

创建Bean

文件结构,在这个Bean中存放的就是这个项目的会使用的各种类,也就是数据库中的实例化。

User

用户类

package com.example.todolistback.Bean;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    private String username;
    private String password;
    // 头像
    private String avatar;
}
Type

备忘录类型类

package com.example.todolistback.Bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Type {
    private Integer typeid;
    private String type;
}
Notes

备忘录内容类

package com.example.todolistback.Bean;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.HashMap;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Notes {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    private Integer rid;
    // 内容
    private String detail;
    // 截止时间
    private Date time;
    // 类型
    private Integer type;
    // 是否完成 0表示还没有 表示完成了
    private Integer finish;
}

mapper层编写

需要在启动类设置扫包

package com.example.todolistback;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.todolistback.mapper")
public class TodolistBackApplication {
    public static void main(String[] args) {
        SpringApplication.run(TodolistBackApplication.class, args);
    }
}

项目结构,在mapper层里面存放各种mapper文件

UserMapper
package com.example.todolistback.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.todolistback.Bean.User;
public interface UserMapper extends BaseMapper<User> {
}
TypeMapper
package com.example.todolistback.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.todolistback.Bean.Type;
public interface TypeMapper extends BaseMapper<Type>{
NotesMapper
package com.example.todolistback.mapper;
import com.example.todolistback.Bean.Notes;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper
public interface NotesMapper extends BaseMapper<Notes> {
}

service层编写

项目结构

UserService
package com.example.forum1.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.forum1.entity.User;
public interface UserService extends IService<User> {
}
TypeService
package com.example.todolistback.serviec;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.todolistback.Bean.Type;
public interface TypeService extends IService<Type> {
}
NotesService
package com.example.todolistback.serviec;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.todolistback.Bean.Notes;
import com.example.todolistback.Bean.User;
public interface NotesService extends IService<Notes> {
}
UserServiceImpl
package com.example.todolistback.serviec.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.todolistback.Bean.User;
import com.example.todolistback.mapper.UserMapper;
import com.example.todolistback.serviec.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
TypeServiceImpl
package com.example.todolistback.serviec.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.todolistback.Bean.Type;
import com.example.todolistback.Bean.User;
import com.example.todolistback.mapper.TypeMapper;
import com.example.todolistback.mapper.UserMapper;
import com.example.todolistback.serviec.TypeService;
import com.example.todolistback.serviec.UserService;
import org.springframework.stereotype.Service;
@Service
public class TypeServiceImpl extends ServiceImpl<TypeMapper, Type> implements TypeService {
}
NotesServiceImpl
package com.example.todolistback.serviec.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.todolistback.Bean.Notes;
import com.example.todolistback.mapper.NotesMapper;
import com.example.todolistback.serviec.NotesService;
import org.springframework.stereotype.Service;
@Service
public class NotesServiceImpl extends ServiceImpl<NotesMapper, Notes> implements NotesService {
}

controller编写

Usercontroller

在User的控制层中,存放的是用户的登录方法,用户的注册方法,还有一个可以根据用户的id对用户进行查询的方法。

对于

主体代码
package com.example.todolistback.Controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.todolistback.Bean.Notes;
import com.example.todolistback.Bean.User;
import com.example.todolistback.common.lang.Result;
import com.example.todolistback.serviec.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@RestController
@RequestMapping("/user")
public class UserController {
    private int userId;
    @Autowired
    private UserService userService;
    // 登录功能
        @RequestMapping(value = "/login", method = RequestMethod.POST)
        public Result login(@RequestBody User user) {
            // 判断用户账号是否正确
            User one = userService.getOne(new QueryWrapper<User>()
                    .eq("username", user.getUsername())
                    .eq("password", user.getPassword())
            );
            if (one != null) {
                userId = one.getId();
                return Result.succ(200,"登录成功", one);
            } else {
                return Result.fail(405, "账号或密码错误");
            }
    }
    // 注册功能
    @RequestMapping(value = "/register", method = RequestMethod.POST)
    public Result register(@RequestBody User user) {
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getUsername, user.getUsername());
        System.out.println(user);
        User tempUsername = userService.getOne(queryWrapper);
        // 先判断一下用户是否存在 存在就返回false
        if (tempUsername != null) {
            return Result.fail(405,"账户已存在");
        } else {
            // 随机生成一个头像
            ArrayList<String> arrayList = new ArrayList<>();
            arrayList.add("https://pic3.zhimg.com/v2-d6ddf0128212235dddf76df7f4383f53.jpg");
            arrayList.add("https://p0.ssl.img.360kuai.com/t01948ff2341a5d1ac3.jpg");
            arrayList.add("https://pic3.zhimg.com/v2-65020b1231ba55d55ee3d6a29ff3df26_r.jpg");
            arrayList.add("https://pic2.zhimg.com/v2-fc348d5e926116782149d2151dc09834.jpg");
            arrayList.add("https://pic4.zhimg.com/v2-797973e16edcd0ccaab44cfbfa08d2d3_r.jpg");
            Random random = new Random();
            user.setAvatar(arrayList.get(random.nextInt(arrayList.size())));
            // 反之加入
            userService.save(user);
            return Result.succ(user);
            }
        }
        // 根据用户id查询
        @RequestMapping ("/selectUserById/{userid}")
        @ResponseBody
        public Result selectUserById(@PathVariable("userid") Integer userid) {
            // 判断用户账号是否正确
            User one = userService.getOne(new QueryWrapper<User>()
                    .eq("id", userid)
            );
            if (one != null) {
                userId = one.getId();
                return Result.succ(200,"查询成功", one);
            } else {
                return Result.fail(405, "查询是啊比");
            }
        }
}
Typecontroller
主体代码

这里面的主要函数的作用是,获取type表的类型与解释的映射表。

package com.example.todolistback.Controller;
    import com.baomidou.mybatisplus.core.conditions.Wrapper;
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.example.todolistback.Bean.Notes;
    import com.example.todolistback.Bean.Type;
    import com.example.todolistback.common.lang.Result;
    import com.example.todolistback.serviec.NotesService;
    import com.example.todolistback.serviec.TypeService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    import java.util.HashMap;
    import java.util.List;
    @Controller
    public class TypeController {
        @Autowired
        private TypeService typeService;
        // 获取编号与类型的映射表
        @ResponseBody
        @GetMapping("/getMapping")
        public HashMap<Integer, String> typeMapping(){
            List<Type> types = typeService.list();
            HashMap<Integer, String> hashMap = new HashMap<>();
            for (Type type : types){
                hashMap.put(type.getTypeid(), type.getType());
            }
            return hashMap;
        }
    }
Notescontroller

在Notes控制层中,存放的是这个保存备忘的功能,分页查询功能,查询全部,修改功能,删除功能,在查询的过程中还包括了根据时间进行排序的功能,可以起到警示作用,还有可以根据是否完成的情况,进行分类查询。

主体代码
package com.example.todolistback.Controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.todolistback.Bean.Notes;
import com.example.todolistback.common.lang.Result;
import com.example.todolistback.serviec.NotesService;
import com.example.todolistback.serviec.TypeService;
import com.example.todolistback.serviec.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class NotesController {
    @Autowired
    private NotesService notesService;
    // 查询文章
    // 最开始查询的时候默认值是1 防止没有数据的情况
    @ResponseBody
    @GetMapping("/selectAllByPage/{useid}")
    public Result list(@PathVariable("userid") Integer userid,@RequestParam(defaultValue = "1") Integer currentPage) {
        Page page = new Page(currentPage, 20);
        // 查询条件 分页的基础上 再按照创建时间排序
        IPage pageData = notesService.page(page, new QueryWrapper<Notes>().orderByAsc("time").eq("rid", userid));
        List records = pageData.getRecords();
        for(int i = 0; i < records.size(); ++ i)
        {
            System.out.println(records.get(i));
        }
//        System.out.println(pageData);
        // 如果成功了返回分页查询的数据
        return Result.succ(pageData);
    }
    // 添加
    @RequestMapping("/save")
    @ResponseBody
    public Result save(@RequestBody Notes notes){
        System.out.println("notes save..." + notes);
        boolean b = notesService.save(notes);
        if (b){
            return Result.succ(200, "添加成功", null);
        }
        return Result.fail(405, "添加失败");
    }
    // 查询 测试用的
    @RequestMapping ("/selectAll")
    @ResponseBody
    public Result selectAll(Integer userid){
        List<Notes> notes =  notesService.list();
        System.out.println(notes);
        if (notes == null){
            return Result.fail(405, "查询失败", null);
        } else {
            return Result.succ(200, "查询成功", notes);
        }
    }
    // 查询 只显示用户自己的
    @RequestMapping ("/selectAllByUserID/{userid}")
    @ResponseBody
    public Result selectAllById(@PathVariable("userid") Integer userid,@RequestParam(defaultValue = "1") Integer currentPage){
        Page page = new Page(currentPage, 20);
        // 查询条件 分页的基础上 再按照创建时间排序
        IPage pageData = notesService.page(page, new QueryWrapper<Notes>().orderByAsc("time").eq("rid", userid));
        return Result.succ(pageData);
    }
    // 根据类型查询
    @RequestMapping ("/selectByType/{type}")
    @ResponseBody
    public Result selectByType(@PathVariable("userid") Integer userid, @PathVariable("type") Integer type){
        QueryWrapper<Notes> wrapper = new QueryWrapper<>();
        wrapper.eq("type", type);
        List<Notes> notes =  notesService.list(wrapper);
        System.out.println(notes);
        if (notes == null){
            return Result.fail(405, "查询失败", null);
        } else {
            return Result.succ(200, "查询成功", notes);
        }
    }
    // 查询全部的类型
    @RequestMapping ("/selectIsFinish/{userid}/{isFinish}")
    @ResponseBody
    public Result selectType(@PathVariable("userid") Integer userid, @PathVariable("isFinish") Integer isFinish,@RequestParam(defaultValue = "1") Integer currentPage){
        Page page = new Page(currentPage, 20);
        // 查询条件 分页的基础上 再按照创建时间排序
        IPage pageData = notesService.page(page, new QueryWrapper<Notes>().orderByAsc("time").eq("rid", userid).eq("finish", isFinish));
        return Result.succ(pageData);
    }
    // 修改
    @RequestMapping("/update")
    @ResponseBody
    public Result update(@RequestBody Notes notes){
        System.out.println("开始更新");
        System.out.println(notes);
        boolean b = notesService.update(notes, new QueryWrapper<Notes>().eq("id", notes.getId()));
        if (b){
            System.out.println("更新成功");
            return Result.succ(200, "更新成功", null);
        }
        System.out.println("更新失败");
        return Result.fail(405, "更新失败");
    }
    // 删除
    @RequestMapping("/delete/{id}")
    @ResponseBody
    public Result delete(@PathVariable("id") Integer id){
        System.out.println("user delete..." + id);
        boolean b = notesService.removeById(id);
        if (b){
            return Result.succ(200, "删除成功", null);
        }
        return Result.fail(405, "删除失败");
    }
}


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
11月前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
728 2
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
880 7
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
1297 1
|
11月前
|
前端开发 安全 Java
基于springboot+vue开发的会议预约管理系统
一个完整的会议预约管理系统,包含前端用户界面、管理后台和后端API服务。 ### 后端 - **框架**: Spring Boot 2.7.18 - **数据库**: MySQL 5.6+ - **ORM**: MyBatis Plus 3.5.3.1 - **安全**: Spring Security + JWT - **Java版本**: Java 11 ### 前端 - **框架**: Vue 3.3.4 - **UI组件**: Element Plus 2.3.8 - **构建工具**: Vite 4.4.5 - **状态管理**: Pinia 2.1.6 - **HTTP客户端
1445 4
基于springboot+vue开发的会议预约管理系统
|
12月前
|
前端开发 JavaScript Java
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】
本系统基于SpringBoot与Vue3开发,实现校园食堂评价功能。前台支持用户注册登录、食堂浏览、菜品查看及评价发布;后台提供食堂、菜品与评价管理模块,支持权限控制与数据维护。技术栈涵盖SpringBoot、MyBatisPlus、Vue3、ElementUI等,适配响应式布局,提供完整源码与数据库脚本,可直接运行部署。
630 6
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
781 70
|
供应链 JavaScript BI
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发
这是一款专为小微企业打造的 SaaS ERP 管理系统,基于 SpringBoot+Vue+ElementUI+UniAPP 技术栈开发,帮助企业轻松上云。系统覆盖进销存、采购、销售、生产、财务、品质、OA 办公及 CRM 等核心功能,业务流程清晰且操作简便。支持二次开发与商用,提供自定义界面、审批流配置及灵活报表设计,助力企业高效管理与数字化转型。
987 2
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发
|
监控 数据可视化 JavaScript
springboot + vue的MES系统生产计划管理源码
MES系统(制造执行系统)的生产计划管理功能是其核心模块之一,涵盖生产计划制定与优化、调度排程、进度监控反馈、资源管理调配及可视化报告五大方面。系统基于SpringBoot + Vue-Element-Plus-Admin技术栈开发,支持多端应用(App、小程序、H5、后台)。通过实时数据采集与分析,MES助力企业优化生产流程,适用于现代化智能制造场景。
702 1
|
JSON 前端开发 Java
SpringBoot+Vue表单文件上传
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82811812 ...
4330 0
|
10月前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。

热门文章

最新文章