当前位置: 首页 > news >正文

前后端分离项目进阶1---后端

前端链接:前端解析

一.项目目录

二.关键代码分析

1)Admin.java

package improv1.improv1.entity;
public class Admin {private String account;private String password;private String name;// 构造方法、getter和setterpublic Admin() {}public Admin(String account, String password, String name) {this.account = account;this.password = password;this.name = name;}// Getters and Setterspublic String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

解析:

编写Admin实体类,其实可以不用写实体类,可以直接通过Mapper来获取数据库表的对应数据,

// Controller中直接接收Map
@PostMapping
public void addAdmin(@RequestBody Map<String, Object> adminMap) {adminMapper.insert(adminMap);
}// Mapper接口
@Insert("INSERT INTO admin VALUES(#{account}, #{password}, #{name})")
int insert(Map<String, Object> map);

但是,这样做不利于纠错,字段名拼写错误只有在运行时才会暴露,无法保证所有必要字段都存在,业务逻辑散落在各处,难以维护。对此,建议

学习阶段:建议坚持用Entity,培养良好设计习惯

正式项目:必须用Entity+DTO,减少后期维护成本

特殊需求:如果确实需要灵活性,可以用MyBatis的 @MapKey 注解:

@Select("SELECT * FROM admin")
@MapKey("account")  // 返回Map结构,key=account,value=记录Map
Map<String, Map<String, Object>> findAllAsMap();

2)AdminMapper.java

package improv1.improv1.mapper;
import improv1.improv1.entity.Admin;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface AdminMapper {@Select("SELECT * FROM admin")List<Admin> findAll();@Select("SELECT * FROM admin WHERE Account = #{account}")Admin findByAccount(String account);@Insert("INSERT INTO admin(Account, Password, Name) VALUES(#{account}, #{password}, #{name})")int insert(Admin admin);@Update("UPDATE admin SET Password = #{password}, Name = #{name} WHERE Account = #{account}")int update(Admin admin);@Delete("DELETE FROM admin WHERE Account = #{account}")int delete(String account);
}

解析:

提供五个接口,分别用来查询全部记录,查询指定账号记录和插入新数据,更新数据,删除数据。

3).AdminController.java

package improv1.improv1.controller;
import improv1.improv1.entity.Admin;
import improv1.improv1.mapper.AdminMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/api/admins")
public class AdminController {@Autowiredprivate AdminMapper adminMapper;@GetMappingpublic List<Admin> getAllAdmins() {return adminMapper.findAll();}@GetMapping("/{account}")public Admin getAdminByAccount(@PathVariable String account) {return adminMapper.findByAccount(account);}@PostMappingpublic int addAdmin(@RequestBody Admin admin) {return adminMapper.insert(admin);}@PutMapping("/{account}")public int updateAdmin(@PathVariable String account, @RequestBody Admin admin) {admin.setAccount(account);return adminMapper.update(admin);}@DeleteMapping("/{account}")public int deleteAdmin(@PathVariable String account) {return adminMapper.delete(account);}
}

解析:

@RequestBody(请求体参数)

作用:从 HTTP 请求体(body) 获取 JSON/XML 数据,并转换成 Java 对象。
适用场景:提交表单数据、创建/更新资源(如 POST 请求传 JSON 数据)。

@PathVariable(路径变量)

作用:从 URL 路径 中获取参数。
适用场景:RESTful API,比如查询、删除某个资源(如 /users/1 表示获取 ID=1 的用户)。

特性@PathVariable@RequestBody
参数来源URL 路径(如 /users/1HTTP 请求体(Body)
数据格式简单类型(数字、字符串)JSON/XML(复杂对象)
适用方法GETDELETEPOSTPUT
示例请求GET /users/1POST /users + JSON
Content-Type不需要指定需指定(如 application/json
http://www.lryc.cn/news/594639.html

相关文章:

  • 易语言+懒人精灵/按键中控群控教程(手机、主板机、模拟器通用)
  • 子网划分核心原理 (网络原理1)
  • Windows Server2022下使用SQL Server2019开发版搭建高可用集群
  • 如何用纯 HTML 文件实现 Vue.js 应用,并通过 CDN 引入 Element UI
  • 【js(3)】执行上下文/作用域链/垃圾回收与内存泄漏/闭包
  • Vue组件之间通信
  • C语言运算符优先级“潜规则”
  • 数据库的介绍和安装
  • HTTP,HTTPS
  • 文件的写出操作|文件的追加写入操作|文件操作的综合案例
  • mac安装node的步骤
  • IDEA 同时修改某个区域内所有相同变量名
  • 跑腿小程序|基于微信小程序的跑腿平台小程序设计与实现(源码+数据库+文档)
  • Taro 生命周期相关 API 详解
  • Idea或Pycharm上.idea的忽略提交的问题总结
  • Linux初识网络
  • 用 STM32 的 SYSTICK 定时器与端口复用重映射玩转嵌入式开发
  • 分布在内侧内嗅皮层(MEC)的带状细胞对NLP中的深层语义分析有什么积极的影响和启示
  • 微服务的编程测评系统-身份认证-管理员登录前端
  • .NET依赖注入IOC你了解吗?
  • 智能体性能优化:延迟、吞吐量与成本控制
  • 机器阅读理解(MRC)全面解析:任务分类、评估指标与57个数据集资源盘点
  • Nacos安装单例模式
  • 西门子 SIMATIC S7-1500 数字量输入模块:深度剖析与应用指南
  • ABQ-LLM:用于大语言模型的任意比特量化推理加速
  • Zabbix 企业级分布式监控系统深度解析
  • Android 单编 framework 相关产物输出介绍
  • 3.组合式API父子通信
  • OpenAI开发的一款实验性大型语言模型(LLM),在2025年国际数学奥林匹克竞赛(IMO)中达到了金牌水平
  • 什么是商业智能BI数据分析的指标爆炸?