当前位置:首页 > 编程笔记 > 正文
已解决

SpringBoot学习笔记-创建个人中心页面(上)

来自网友在路上 182882提问 提问时间:2023-11-18 17:00:19阅读次数: 82

最佳答案 问答题库828位专家为你答疑解惑

笔记内容转载自 AcWing 的 SpringBoot 框架课讲义,课程链接:AcWing SpringBoot 框架课。

CONTENTS

  • 1. 更新数据库表
  • 2. 实现后端API

1. 更新数据库表

我们需要创建一个表来保存 Bot 的信息,新建一个 bot 表,包含以下几个列:

  • id: int:非空、自动增加、唯一、主键。
  • user_id: int:非空。注意:在 pojo 中需要定义成 userId,在 queryWrapper 中的名称仍然为 user_id
  • title: varchar(100)
  • description: varchar(300)
  • content:varchar(10000)
  • rating: int:默认值为1500。
  • createtime: datetime,注意:在 pojo 中定义日期格式的注解:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  • modifytime: datetime

可以使用如下 SQL 语句一键创建好该表:

CREATE TABLE `kob`.`bot` (`id` int NOT NULL AUTO_INCREMENT,`user_id` int NOT NULL,`title` varchar(100) NULL,`description` varchar(300) NULL,`content` varchar(10000) NULL,`rating` int NULL DEFAULT 1500,`createtime` datetime NULL,`modifytime` datetime NULL,PRIMARY KEY (`id`)
);

创建好数据库表后我们需要创建一个 pojo,在 pojo 目录下创建 Bot 类:

package com.kob.backend.pojo;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Bot {@TableId(value = "id", type = IdType.AUTO)  // 声明id为自增类型private Integer id;private Integer userID;  // 注意驼峰命名private String title;private String description;private String content;private Integer rating;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")  // 注意日期格式的设置private Date createtime;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date modifytime;
}

然后就可以实现 mapper,在 mapper 目录下创建 BotMapper 接口:

package com.kob.backend.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kob.backend.pojo.Bot;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface BotMapper extends BaseMapper<Bot> {
}

2. 实现后端API

首先在 service.user 包下创建 bot 包存放与 Bot 相关的 Service 代码,然后在 service.impl.user 包下创建 bot 包存放相应的 Service 实现代码,最后在 controller.user 包下创建 bot 包存放 Controller。

我们需要实现以下四个 API:

  • /user/bot/add/:创建一个 Bot。
  • /user/bot/remove/:删除一个 Bot。
  • /user/bot/update/:修改一个 Bot。
  • /user/bot/getlist/:查询 Bot 列表。

service.user.bot 包下创建这四个 API 的 Service 接口:

(1)AddService

package com.kob.backend.service.user.bot;import java.util.Map;public interface AddService {Map<String, String> add(Map<String, String> data);
}

(2)RemoveService

package com.kob.backend.service.user.bot;import java.util.Map;public interface RemoveService {Map<String, String> remove(Map<String, String> data);
}

(3)UpdateService

package com.kob.backend.service.user.bot;import java.util.Map;public interface UpdateService {Map<String, String> update(Map<String, String> data);
}

(4)GetListService

package com.kob.backend.service.user.bot;import com.kob.backend.pojo.Bot;import java.util.List;public interface GetListService {List<Bot> getList();  // 根据用户信息获取Bot,用户信息存放在令牌中,因此不用传参数
}

接下来在 service.impl.user.bot 包下创建这四个 Service 接口的实现:

(1)AddServiceImpl

package com.kob.backend.service.impl.user.bot;import com.kob.backend.mapper.BotMapper;
import com.kob.backend.pojo.Bot;
import com.kob.backend.pojo.User;
import com.kob.backend.service.impl.utils.UserDetailsImpl;
import com.kob.backend.service.user.bot.AddService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;import java.util.Date;
import java.util.HashMap;
import java.util.Map;@Service
public class AddServiceImpl implements AddService {@Autowiredprivate BotMapper botMapper;@Overridepublic Map<String, String> add(Map<String, String> data) {UsernamePasswordAuthenticationToken authenticationToken =(UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();UserDetailsImpl loginUser = (UserDetailsImpl) authenticationToken.getPrincipal();User user = loginUser.getUser();  // 获取当前登录的用户String title = data.get("title");String description = data.get("description");String content = data.get("content");Map<String, String> res = new HashMap<>();if (title == null || title.isEmpty()) {res.put("result", "The title can't be empty!");return res;}if (title.length() > 100) {res.put("result", "Title length can't exceed 100!");return res;}if (description == null || description.isEmpty()) {description = "这个用户很懒,什么也没留下~";}if (description.length() > 300) {res.put("result", "Description length can't exceed 300!");return res;}if (content == null || content.isEmpty()) {res.put("result", "The content can't be empty!");return res;}if (content.length() > 10000) {res.put("result", "Code length can't exceed 10000!");return res;}Date now = new Date();Bot bot = new Bot(null, user.getId(), title, description, content, 1500, now, now);botMapper.insert(bot);res.put("result", "success");return res;}
}

(2)RemoveServiceImpl

package com.kob.backend.service.impl.user.bot;import com.kob.backend.mapper.BotMapper;
import com.kob.backend.pojo.Bot;
import com.kob.backend.pojo.User;
import com.kob.backend.service.impl.utils.UserDetailsImpl;
import com.kob.backend.service.user.bot.RemoveService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;import java.util.HashMap;
import java.util.Map;@Service
public class RemoveServiceImpl implements RemoveService {@Autowiredprivate BotMapper botMapper;@Overridepublic Map<String, String> remove(Map<String, String> data) {UsernamePasswordAuthenticationToken authenticationToken =(UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();UserDetailsImpl loginUser = (UserDetailsImpl) authenticationToken.getPrincipal();User user = loginUser.getUser();  // 需要判断要删除的Bot是不是当前登录用户的Botint bot_id = Integer.parseInt(data.get("bot_id"));Bot bot = botMapper.selectById(bot_id);Map<String, String> res = new HashMap<>();if (bot == null) {res.put("result", "Bot doesn't exist!");return res;}if (!bot.getUserID().equals(user.getId())) {res.put("result", "No permission to delete the bot!");return res;}botMapper.deleteById(bot_id);res.put("result", "success");return null;}
}

(3)UpdateServiceImpl

package com.kob.backend.service.impl.user.bot;import com.kob.backend.mapper.BotMapper;
import com.kob.backend.pojo.Bot;
import com.kob.backend.pojo.User;
import com.kob.backend.service.impl.utils.UserDetailsImpl;
import com.kob.backend.service.user.bot.UpdateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;import java.util.Date;
import java.util.HashMap;
import java.util.Map;@Service
public class UpdateServiceImpl implements UpdateService {@Autowiredprivate BotMapper botMapper;@Overridepublic Map<String, String> update(Map<String, String> data) {UsernamePasswordAuthenticationToken authenticationToken =(UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();UserDetailsImpl loginUser = (UserDetailsImpl) authenticationToken.getPrincipal();User user = loginUser.getUser();int bot_id = Integer.parseInt(data.get("bot_id"));String title = data.get("title");String description = data.get("description");String content = data.get("content");Map<String, String> res = new HashMap<>();if (title == null || title.isEmpty()) {res.put("result", "The title can't be empty!");return res;}if (title.length() > 100) {res.put("result", "Title length can't exceed 100!");return res;}if (description == null || description.isEmpty()) {description = "这个用户很懒,什么也没留下~";}if (description.length() > 300) {res.put("result", "Description length can't exceed 300!");return res;}if (content == null || content.isEmpty()) {res.put("result", "The content can't be empty!");return res;}if (content.length() > 10000) {res.put("result", "Code length can't exceed 10000!");return res;}Bot bot = botMapper.selectById(bot_id);if (bot == null) {res.put("result", "Bot doesn't exist!");return res;}if (!bot.getUserID().equals(user.getId())) {res.put("result", "No permission to update the bot!");return res;}Bot new_bot = new Bot(bot.getId(), user.getId(), title, description, content, bot.getRating(), bot.getCreatetime(), new Date());botMapper.updateById(new_bot);res.put("result", "success");return null;}
}

(4)GetListServiceImpl

package com.kob.backend.service.impl.user.bot;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kob.backend.mapper.BotMapper;
import com.kob.backend.pojo.Bot;
import com.kob.backend.pojo.User;
import com.kob.backend.service.impl.utils.UserDetailsImpl;
import com.kob.backend.service.user.bot.GetListService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class GetListServiceImpl implements GetListService {@Autowiredprivate BotMapper botMapper;@Overridepublic List<Bot> getList() {UsernamePasswordAuthenticationToken authenticationToken =(UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();UserDetailsImpl loginUser = (UserDetailsImpl) authenticationToken.getPrincipal();User user = loginUser.getUser();QueryWrapper<Bot> queryWrapper = new QueryWrapper<>();queryWrapper.eq("user_id", user.getId());return botMapper.selectList(queryWrapper);}
}

最后在 controller.user.bot 包下创建对应的 Controller:

(1)AddController

package com.kob.backend.controller.user.bot;import com.kob.backend.service.user.bot.AddService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController
public class AddController {@Autowiredprivate AddService addService;@PostMapping("/user/bot/add/")public Map<String, String> add(@RequestParam Map<String, String> data) {return addService.add(data);}
}

(2)RemoveController

package com.kob.backend.controller.user.bot;import com.kob.backend.service.user.bot.RemoveService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController
public class RemoveController {@Autowiredprivate RemoveService removeService;@PostMapping("/user/bot/remove/")public Map<String, String> remove(@RequestParam Map<String, String> data) {return removeService.remove(data);}
}

(3)UpdateController

package com.kob.backend.controller.user.bot;import com.kob.backend.service.user.bot.UpdateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController
public class UpdateController {@Autowiredprivate UpdateService updateService;@PostMapping("/user/bot/update/")public Map<String, String> update(@RequestParam Map<String, String> data) {return updateService.update(data);}
}

(4)GetListController

package com.kob.backend.controller.user.bot;import com.kob.backend.pojo.Bot;
import com.kob.backend.service.user.bot.GetListService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class GetListController {@Autowiredprivate GetListService getListService;@GetMapping("/user/bot/getlist/")public List<Bot> getList() {return getListService.getList();}
}
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"SpringBoot学习笔记-创建个人中心页面(上)":http://eshow365.cn/6-38542-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!