Springmvc实现增删改差
一、包结构

二、各层代码
(1)数据User

public class User {private Integer id;private String userName;private String note;public User() {super();}public User(Integer i, String userName, String note) {super();this.id = i;this.userName = userName;this.note = note;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getNote() {return note;}public void setNote(String note) {this.note = note;}}
(2)dao层
IUserDao接口
public interface IUserDao {public User getUser(Integer id);public Boolean insertUser(User user);public List<User> findAllUser();Boolean deleteUser(Integer id);Boolean modifyUserName(Integer id, String newUserName);
}
实现类:
@Repository
public class UserDaoImpl implements IUserDao {private List<User> users = new ArrayList<User>();public UserDaoImpl() {super();users.add(new User(1, "user_name_1", "note_1"));users.add(new User(2, "user_name_2", "note_2"));users.add(new User(3, "user_name_3", "note_3"));}@Override/* 根据id来返回对象*/public User getUser(Integer id) {// TODO Auto-generated method stubfor (User user : users) {if (user.getId().equals(id)) {return user;}}return null;}@Overridepublic Boolean insertUser(User user) {// TODO Auto-generated method stubBoolean flag=false;System.out.println(user.getUserName()+">>"+user.getNote());users.add(user); //User为上上面申明的集合 add方法为List集合的方法flag=true;return flag;}@Override public List<User> findAllUser() { return users; }
}
(3)service层:
IUserService接口:
public interface IUserService {public User getUser(Integer id);public List<User> findAllUser();public Boolean insertUser(User user);public List<User> queryUser(String userName,String note);Boolean deleteUser(Integer id);Boolean modifyUserName(Integer id, String newUserName);
}
实现类:
@Service
public class UserServiceImpl implements IUserService {@Autowiredprivate IUserDao userDao;/* 省去了申明传值的步骤*/@Override/*根据User来获取对象*/public User getUser(Integer id) {// TODO Auto-generated method stubreturn userDao.getUser(id);}@Overridepublic Boolean insertUser(User user) {// TODO Auto-generated method stubBoolean flag=false;System.out.println(user.getUserName()+">>"+user.getNote());flag=userDao.insertUser(user);return flag;}@Overridepublic List<User> findAllUser() {List<User> users = userDao.findAllUser();if (users.size() > 1) {for (int i = 1; i < users.size(); i++) {User currentUser = users.get(i);User previousUser = users.get(i-1);if (currentUser.getId() == null) {currentUser.setId(previousUser.getId()+1);}}}return users;}@Overridepublic List<User> queryUser(String userName1, String note1) {List<User> users = userDao.findAllUser();List<User> result = new ArrayList<>();for (User user : users) {if (user.getUserName().equals(userName1) && user.getNote().equals(note1)) {result.add(user);}}return result;}public Boolean deleteUser(Integer id) {return userDao.deleteUser(id);}@Overridepublic Boolean modifyUserName(Integer id, String newUserName) {return userDao.modifyUserName(id, newUserName);}
}
(4)controller层
@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate IUserService userService=null;@GetMapping("/add")public String add() {return "add";}/** 新增用户*@param user 通过@RequestBody注解得到JSON参数*return 返回用户信息*/@PostMapping("/insert")@ResponseBodypublic User insert(@RequestBody User user) {userService.insertUser(user);return user;}//显示数据 http://localhost:8080/user/list@RequestMapping("/list")@ResponseBodypublic List<User> list(){//访问模型层得到数据List<User> users=userService.findAllUser();return users;}//显示数据 http://localhost:8080/user/table@RequestMapping("/table")public ModelAndView table0() {//访问模型层得到数据List<User> users=userService.findAllUser();System.out.println("111");//模型和视图ModelAndView mv=new ModelAndView();//定义模型视图 1mv.setViewName("table");//加入数据模型mv.addObject("users",users);//返回模型和视图return mv;}@RequestMapping(value = "/query1")@ResponseBodypublic ModelAndView query1(@RequestParam(value = "userName") String userName,@RequestParam("note") String note){List<User> users=userService.queryUser(userName,note);ModelAndView mv=new ModelAndView();mv.setViewName("table");mv.addObject("users",users);return mv;}@RequestMapping("/delete/{id}")public String deleteUser(@PathVariable Integer id, Model model) {boolean success = userService.deleteUser(id);model.addAttribute("success", success);model.addAttribute("deletedUserId", id);return "delete";}@GetMapping("/modify")public String showModifyPage() {return "modify";}@PostMapping("/modify")@ResponseBodypublic ResponseEntity<Map<String, String>> modifyUser(@RequestParam int userId,@RequestParam String newUserName) {// 进行修改用户的逻辑,假设这里调用了修改用户的 service 方法boolean success = userService.modifyUserName(userId, newUserName);// 返回修改后的结果Map<String, String> result = new HashMap<>();result.put("modifiedUserId", String.valueOf(userId));result.put("newUserName", newUserName);// 返回 ResponseEntityreturn ResponseEntity.ok(result);}
}
相关文章:
Springmvc实现增删改差
一、包结构 二、各层代码 (1)数据User public class User {private Integer id;private String userName;private String note;public User() {super();}public User(Integer i, String userName, String note) {super();this.id i;this.userName userName;this.note note;…...
CentOS 7 使用cJSON 库
什么是JSON JSON是一种轻量级的数据交换格式,可读性强、编写简单。键值对组合编写规则,键名使用双引号包裹,冒号:分隔符后面紧跟着数值,有两种常用的数据类型是对象和数组。 对象:使用花括号{}包裹起来的…...
Linux——使用kill结束进程并恢复进程
目录 查看进程结束进程修复进程 查看进程 在linux中,关闭某进程之前先查看已经在运行的进程有哪些,使用下面命令查看: ps aux | grep -i apt 命令查看哪个进程正在使用 apt结束进程 结束某线程的命令为: sudo kill -9 PID 命令…...
【Linux虚拟内存的配置】
设置Linux虚拟内存 注意:在做项目时,电脑内存不够用,怎么办? 这里给大家提供了一种解决方案,用磁盘换内存,具体如下: 虚拟内存swap介绍 如果你的服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内…...
基于C#实现外排序
一、N 路归并排序 1.1、概序 我们知道算法中有一种叫做分治思想,一个大问题我们可以采取分而治之,各个突破,当子问题解决了,大问题也就 KO 了,还有一点我们知道内排序的归并排序是采用二路归并的,因为分治…...
HTML CSS登录网页设计
一、效果图: 二、HTML代码: <!DOCTYPE html> <!-- 定义HTML5文档 --> <html lang="en"> …...
dos 命令 判断路径中包含某字符并移动文件
SET GenFolder C:\Users\administered\Desktop\t2\old_file set path1C:\Users\administered\Desktop\t1\crontab_master set path2C:\Users\administered\Desktop\t2\old_file if not exist %GenFolder% ( echo %GenFolder%目录不存在,已创建该目录&#x…...
electron+vue3全家桶+vite项目搭建【26】electron本地安装Vue Devtool插件,安装浏览器扩展
文章目录 引入获取vue devtool导入插件排除插件的npm脚本最终效果 引入 demo项目地址 Vue Devtools插件是vue项目必备插件,它是安装在浏览器里的,而咱们的electron中实际就包含了一个浏览器,同理它也可以加载浏览器插件 获取vue devtool 直…...
Modbus TCP
Modbus (👆 百度百科,放心跳转) 起源 Modbus 由 Modicon 公司于 1979 年开发,是一种工业现场总线协议标准。 Modbus 通信协议具有多个变种,支持串口,以太网多个版本,其中最著名的…...
基于人工兔算法优化概率神经网络PNN的分类预测 - 附代码
基于人工兔算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于人工兔算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于人工兔优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…...
微服务学习(十二):安装Minio
微服务学习(十二):安装Minio 一、简介 MinIO 是一款基于Go语言发开的高性能、分布式的对象存储系统。客户端支持Java,Net,Python,Javacript, Golang语言。MinIO系统,非常适合于存储大容量非结构化的数据,例如图片、视…...
SpringCloud实用-OpenFeign整合okHttp
文章目录 前言正文一、OkHttpFeignConfiguration 的启用1.1 分析配置类1.2 得出结论,需要增加配置1.3 调试 二、OkHttpFeignLoadBalancerConfiguration 的启用2.1 分析配置类2.2 得出结论2.3 测试 附录附1:本系列文章链接附2:OkHttpClient 增…...
Python 异步套接字编程
异步套接字编程是异步编程在网络通信中的应用,它使用异步 IO 操作和事件循环来实现高并发的网络应用。Python 中的 asyncio 模块提供了对异步套接字编程的支持,以下是异步套接字编程的一些重要概念和使用方法: 1. 异步套接字服务器ÿ…...
今年的校招薪资真的让人咋舌!
秋招接近尾声,各大公司基本也陆续开奖了。这里整理了部分公司的薪资情况,数据来源于 OfferShow 和牛客网。 ps:爆料薪资的几乎都是 211 和 985 的,并不是刻意只选取学校好的。另外,无法保证数据的严格准确性。 淘天 …...
debian 设置系统默认以命令行方式启动,关闭x windows
debian 设置系统默认以命令行方式启动,关闭x windows 2021-01-02 tech linux 设置 grub启动设置在/etc/default/grub中,打开 default grub 配置: $ sudo vim /etc/default/grub修改以下配置: 更新grub,设置多用户启动: …...
AMEYA360:蔡司新能源汽车解决方案驱动产业未来
电动化正在重塑中国汽车工业。自中国汽车工业开始发展以来,在电动化和智能化的浪潮推动下,汽车行业从未面临着如此巨大的变革。得益于中国汽车产业尤其是新能源车过去十余年的激流勇进,消费者对新能源汽车的接受度也在发生转变。新能源汽车市…...
C#面试问题整理
sqlserver中视图和表的区别 在 SQL Server 中,视图(View)和表(Table)是不同的对象,它们有以下几点区别: 数据存储方式:表是一种实际存储数据的数据库对象,它包含列和行&…...
微信小程序 基于Android的共享付费自习室座位选座系统uniAPP
题目: 基于Android的共享自习室APP设计与实现 (学校要求:数据库不少于有逻辑关系的20个表,系统功能不少于60个功能点) 技术: 功能: 1. 用户端: 一、首页: (1&…...
Java中类的类型判断技巧以及没有无参构造函数时的应对策略。isInstance()方法解析
类的类型判断 基本数据类型的包装类中,例如Integer、Long这些类是没有无参构造方法的,因此在以下情况中,会出错 具体类型是未知的,只有全路径类名 String typeSte "java.lang.Integer"; Class<?> typeClass …...
基于微信小程序的员工宿舍报修系统
项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时…...
TTL计算机原型Pilot-1 CPU的设计与实现
1. 项目概述:ECM-16/TTL计算机的简化验证原型Pilot-1 CPU是我在构建完整ECM-16/TTL计算机过程中的一个关键验证原型。这个采用纯TTL逻辑芯片搭建的16位处理器,虽然指令存储空间仅有16个单词(采用哈佛架构设计),但已经实…...
Gemma 4 / PaliGemma 2 / Ollama / Open WebUI 本地部署复盘
Gemma 4 / PaliGemma 2 / Ollama / Open WebUI 本地部署复盘 日期:2026-04-20环境:WSL2 Ubuntu (gkubuntu2004)目标: 本地部署 Gemma 4本地部署 PaliGemma 2使用 Ollama 提供交互式聊天能力使用 Open WebUI 提供图形化聊天界面尝试将 PaliGem…...
为什么企业智能体必须告别“对话框”:拆解 Agentic UI 与交互重构
自从 ChatGPT 确立了“对话框(Chat UI)”作为 AI 的默认交互形态后,几乎所有的企业级 AI 应用都陷入了这种路径依赖:无论是在 ERP 里查库存,还是在 OA 里提报销,系统统统弹出一个聊天窗口让员工去打字提问。…...
别再为12G-SDI的PCB阻抗匹配头疼了!手把手教你用FR4搞定75Ω和100Ω(附Ti参考设计)
12G-SDI PCB设计实战:FR4板材下的阻抗匹配精要 在超高清视频传输领域,12G-SDI已成为4K/60p信号传输的主流标准。面对高速信号带来的设计挑战,许多工程师对FR4板材能否胜任12G-SDI的传输需求存在疑虑。本文将深入解析如何在标准FR4板材上实现精…...
如何用免费工具突破8大网盘下载限速:LinkSwift直链解析助手终极指南
如何用免费工具突破8大网盘下载限速:LinkSwift直链解析助手终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…...
爱毕业aibiye具备每日免费无限查重功能,集成AI改写工具,帮助用户轻松调整论文内容
核心工具对比速览 工具名称 查重速度 降重效果 特色功能 适用场景 aicheck 极快 重复率可降30% 专业术语保留 高重复率紧急处理 aibiye 中等 逻辑优化明显 学术表达增强 提升论文质量 askpaper 快 结构保持完整 多语言支持 外文论文降重 秒篇 极快 上下文…...
3步搞定百度网盘提取码:智能查询工具baidupankey终极指南
3步搞定百度网盘提取码:智能查询工具baidupankey终极指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘资源下载而频繁寻找提取码吗?每次遇到需要密码的分享链接,都要在多个…...
利用GitHub Actions实现SDMatte模型的CI/CD自动化测试流水线
利用GitHub Actions实现SDMatte模型的CI/CD自动化测试流水线 1. 为什么需要自动化测试流水线 在AI模型开发过程中,每次代码变更或权重更新都可能影响最终效果。传统的人工测试方式存在几个明显痛点:测试覆盖率低、反馈周期长、环境不一致导致结果不可复…...
Z-Image开源大模型调试工具:LM系列权重一键注入+生成结果自动标注
Z-Image开源大模型调试工具:LM系列权重一键注入生成结果自动标注 1. 工具概述 Z-Image是一款专为LM系列自定义权重设计的Transformer权重可视化测试工具,基于阿里云通义Z-Image底座开发。它解决了模型调试过程中的几个关键痛点: 权重切换繁…...
wps加载项安装
开发完以后怎么安装呢? window: 1.首先执行 wpsjs build,然后选择在线插件,然后将build里最里层文件里的内容全部复制然后启动一个node服务,放在如图public文件下,不会启node服务的就找后端部署下ÿ…...
