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);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165112.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165112.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165112.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt實現自定義IP地址輸入控件(百分百還原Windows 10網絡地址輸入框)

在開發網絡相關的程序時,我們經常需要輸入IP地址,例如源地址和目標地址。Qt提供了一些基礎的控件,如QLineEdit,但是它們并不能滿足我們對IP地址輸入的要求,例如限制輸入的格式、自動跳轉到下一個輸入框、處理回車和退格鍵等。因此,我們需要自己編寫一個自定義的IP地址輸入…

AI AIgents時代- Autogen

由微軟開發的 Autogen 是一個新的 Agents 項目&#xff0c;剛一上線就登上GitHub熱榜&#xff0c;狂攬11k星??? 項目地址&#xff1a;https://github.com/microsoft/autogen Autogen 允許你根據需要創建任意數量的Agents&#xff0c;并讓它們協同工作以執行任務。它的獨特…

外觀模式 (Facade Pattern)

定義&#xff1a; 外觀模式&#xff08;Facade Pattern&#xff09;是一種結構型設計模式&#xff0c;它通過提供一個統一的高層接口來簡化復雜子系統或庫的訪問。這種模式的關鍵在于&#xff0c;它創建了一個外觀類&#xff0c;這個類封裝了對子系統的一系列復雜交互&#xf…

【贈書第7期】從零基礎到精通Flutter開發

文章目錄 前言 1 安裝Flutter和Dart 2 了解Flutter的基礎概念 2.1 Widget 2.2 MaterialApp和Scaffold 2.3 Hot Reload 3 編寫你的第一個Flutter應用 3.1 創建一個Flutter項目 3.2 修改默認頁面 3.3 添加交互 4 深入學習Flutter高級特性 4.1 路由和導航 4.2 狀態管…

python之TCP的網絡應用程序開發

文章目錄 版權聲明python3編碼轉換socket類的使用創建Socket對象Socket對象常用方法和參數使用示例服務器端代碼客戶端代碼 TCP客戶端程序開發流程TCP服務端程序開發流程TCP網絡應用程序注意點socket之send和recv原理剖析send原理剖析recv原理剖析send和recv原理剖析圖 多任務版…

淺談C#在unity應用中的工廠模式

文章目錄 前言簡單工廠模式工廠方法模式抽象工廠模式Unity實戰 前言 工廠模式是一種創建型設計模式&#xff0c;它提供了一種將對象的實例化過程封裝起來的方法&#xff0c;使得客戶端代碼不必直接依賴于具體類。這有助于降低代碼的耦合度&#xff0c;提高代碼的可維護性和可擴…

Python項目打包

Python項目如何打包&#xff1f; 本指南總結了Python項目打包的最佳實踐&#xff0c;主要涉及代碼的打包和分發&#xff0c;以及環境和依賴的管理。 0. 一般項目清單 源代碼&#xff08;可使用git托管&#xff09;數據包&#xff08;可使用DVC托管&#xff09;Docker環境鏡像…

Python進行threading多線程編程及高級并發處理機制

threading 模塊是 Python 中用于進行多線程編程的標準庫之一。通過 threading 模塊&#xff0c;你可以創建和管理線程&#xff0c;使得程序能夠并發執行多個任務。以下是一些基本的 threading 模塊的用法&#xff1a; 1. 創建線程&#xff1a; 使用 threading.Thread 類可以創…

在兩個java項目中實現Redis的發布訂閱模式

如何在兩個java項目中實現Redis的發布訂閱模式&#xff1f; 1. Redis簡介2. 發布訂閱模式介紹3. 實現思路4. 代碼實現及詳細解釋4.1. RedisUtil4.2. Publisher4.3. Subscriber4.4. 運行程序 目錄&#xff1a; Redis簡介發布訂閱模式介紹實現思路代碼實現及詳細解釋 1. Redis簡…

HTB Napper WriteUp

Napper 2023年11月12日 14:58:35User Nmap ? Napper nmap -sCV -A -p- 10.10.11.240 --min-rate 10000 Starting Nmap 7.80 ( https://nmap.org ) at 2023-11-12 13:58 CST Nmap scan report for app.napper.htb (10.10.11.240) Host is up (0.15s latency). Not shown: …

gitee推薦-SAPI++

一下內容來自gitee。 SaaS-Apps-Engine: 智者|SAPI是多應用、多租戶SaaS應用引擎&#xff0c;支持&#xff08;小程序/公眾號/輕應用/企微/抖音/支付寶/百度&#xff09;等多平臺應用。基于ThinkPHP6.1/8.0原生多應用模式開發&#xff0c;簡潔、高效、易擴展。集成強大的權限控…

適用于電腦的5個免費文件恢復軟件分享

適用于電腦的最佳免費文件恢復軟件 任何計算機用戶都可能經歷過丟失重要文件的恐懼。重要數據的丟失可能會令人不安和沮喪&#xff0c;無論是由于不小心刪除、計算機故障還是硬盤格式化造成的。幸運的是&#xff0c;在數字時代&#xff0c;您可以使用值得信賴的解決方案檢索這些…

好工具|datamap,一個好用的地圖可視化Excel插件,在Excel中實現地理編碼、拾取坐標

在做VRP相關研究的時候&#xff0c;需要對地圖數據做很多處理&#xff0c;比如地理編碼&#xff0c;根據“重慶市沙坪壩區沙正街174號”這樣的一個文本地址知道他的經緯度&#xff1b;再比如繪制一些散點圖&#xff0c;根據某個位置的經緯度在地圖上把它標注出來。還有有的時候…

vue + docxtemplater 導出 word 文檔

一、痛點 word 導出 這種功能其實之前都是后端實現的&#xff0c;但最近有個項目沒得后端。所以研究下前端導出。 ps&#xff1a; 前端還可以導出 pdf&#xff0c;但是其分頁問題需要話精力去計算才可能實現&#xff0c;并且都不是很完善。可參考之前的文章&#xff1a;利用 h…

MIT6.824-Raft筆記:腦裂、Majority Vote(過半投票/過半選舉)

本部分主要是問題引入&#xff0c;以及給出一個解決方案 1 腦裂&#xff08;Split Brain&#xff09; replication system的共同點&#xff1a;單點 前面幾個容錯特性&#xff08;fault-tolerant&#xff09;的系統&#xff0c;有一個共同的特點。 MapReduce復制了計算&…

JavaScript框架 Angular、React、Vue.js 的全棧解決方案比較

在 Web 開發領域&#xff0c;JavaScript 提供大量技術棧可供選擇。其中最典型的三套組合&#xff0c;分別是 MERN、MEAN 和 MEVN。前端框架&#xff08;React、Angular 和 Vue&#xff09;進行簡化比較。 MERN 技術棧詳解 MERN 技術棧包含四大具體組件&#xff1a; MongoDB&am…

藍橋杯物聯網競賽_STM32L071_3_Oled顯示

地位&#xff1a; 對于任何一門編程語言的學習&#xff0c;print函數毫無疑問是一種最好的調試手段&#xff0c;調試者不僅能通過它獲取程序變量的運行狀態而且通過對其合理使用獲取程序的運行流程&#xff0c;更能通過關鍵變量的輸出幫你驗證推理的正確與否&#xff0c;樸素的…

常見網絡安全防護

1 阻斷服務攻擊&#xff08;DOS&#xff09; 阻斷服務攻擊&#xff0c;想辦法目標網絡資源用盡變種&#xff1a;分布式阻斷服務攻擊 影響&#xff1a; 寬帶消耗性&#xff08;消耗目標的帶寬&#xff09;資源消耗型&#xff08;消耗目標的計算資源&#xff09; 解決方案&am…

人工智能對網絡安全的影響越來越大

如果問當前IT行業最熱門的話題是什么&#xff0c;很少有人會回答除了人工智能&#xff08;AI&#xff09;之外的任何話題。 在不到 12 個月的時間里&#xff0c;人工智能已經從一項只有 IT 專業人員才能理解的技術發展成為從小學生到作家、程序員和藝術家的每個人都使用的工具…

MySQL索引事務基礎

目錄 1. 索引 1.1索引的概念 1.2索引的特點 1.3 索引的使用場景 1.4索引的使用 1.4.1查看索引 1.4.2創建索引 1.4.3刪除索引 1.5索引保存的數據結構 2.事務 2.1經典例子 2.2事務的概念 2.3事務的使用 2.4事務的4個核心特性 2.5事務的并發問題 2.5.1臟讀 2.5.2不可…