说明:
(1)本篇博客内容:【修改】功能;
(2)几点说明:
● 本篇博客前端部分,涉及到了大量的layui的内容;没必要深究,但要尽量做到了能不留盲点的自洽;
● 本篇博客讲到了更新操作的套路:【先查询原始数据】→【然后,在原始数据基础上,进行对应属性的调整】→【然后,再拿这个调整后的原始对象,去更新】;这个十分重要;
目录
(1)第一部分:点击【修改】按钮后,根据id去查询图书信息,回填到弹出的表单中;
(2)第二部分:当我们修改完了,点击【立即提交】后,向后端的update接口,提交数据,去更新;
(1)第一部分:点击【修改】按钮后,根据id去查询图书信息,回填到弹出的表单中;
(2)第二部分:当我们修改完了,点击【立即提交】后,向后端的update接口,提交数据;
1.完成上面【第一部分】的内容:在MBookController中,创建一个根据图书id查询图书信息的方法:selectById()方法;
(1)在BookService接口中,定义更新图书的方法:updateBook()方法;
(2)在BookServiceImpl类中,去实现更新图书的方法:updateBook()方法;
(3)在MBookController中,创建更新的方法:updateBook()方法;(这儿,讲到了更新操作的一般操作策略,十分重要!!!)
一:前置内容说明;
1.【修改】部分,主要包含两部分内容;
(1)第一部分:点击【修改】按钮后,根据id去查询图书信息,回填到弹出的表单中;
……………………………………………………
(2)第二部分:当我们修改完了,点击【立即提交】后,向后端的update接口,提交数据,去更新;
2.前端内容分析;
(1)第一部分:点击【修改】按钮后,根据id去查询图书信息,回填到弹出的表单中;
……………………………………………………
(2)第二部分:当我们修改完了,点击【立即提交】后,向后端的update接口,提交数据;
前端的内容分析好了,接下来就是在后端开发与之对应的接口了;
二:正式开发;
1.完成上面【第一部分】的内容:在MBookController中,创建一个根据图书id查询图书信息的方法:selectById()方法;
@GetMapping("/id/{id}") @ResponseBody public Map selectById(@PathVariable("id") Long bookId) { Book book = bookService.selectById(bookId); Map result = new HashMap(); result.put("code", 0); result.put("msg", "success"); result.put("data", book); return result; }
说明:
(1)url要对应上,而且其需要使用路径变量去接收url中的参数;
有关路径变量,第一次遇到是在【RESTful开发风格4:RESTful基本使用二:【@RestController注解】;【路径变量(uri中的变量)】(使用@PathVariable注解来获取路径变量值);】;如有需要,可以去参考;
(2)后端接口,根据前端需求返回数据就行了;
(3)重启Tomcat,观察效果;
2.完成上面【第二部分】的内容:图书更新;
(1)在BookService接口中,定义更新图书的方法:updateBook()方法;
……………………………………………………
(2)在BookServiceImpl类中,去实现更新图书的方法:updateBook()方法;
……………………………………………………
(3)在MBookController中,创建更新的方法:updateBook()方法;(这儿,讲到了更新操作的一般操作策略,十分重要!!!)
@PostMapping("/update") @ResponseBody public Map updateBook(Book book) { Map result = new HashMap(); try { Book rawBook = bookService.selectById(book.getBookId()); rawBook.setBookName(book.getBookName()); rawBook.setSubTitle(book.getSubTitle()); rawBook.setAuthor(book.getAuthor()); rawBook.setCategoryId(book.getCategoryId()); rawBook.setDescription(book.getDescription()); Document document = Jsoup.parse(book.getDescription()); String cover = document.select("img").first().attr("src"); rawBook.setCover(cover); bookService.updateBook(rawBook); result.put("code", 0); result.put("msg", "success"); } catch (BussinessException ex) { ex.printStackTrace(); result.put("code", ex.getCode()); result.put("msg", ex.getMsg()); } return result; }
说明:
(1)url要写对;
(2)接收数据和返回数据,要符合前端要求;
(3)更新的正确做法:
首先,不能直接拿前端传过来的对象去更新;
正确的做法是:先根据【前端传过来的对象的信息】,去数据库中查询【原始的对象信息】;然后,根据【前端传过来的对象的信息】,去更新【原始的对象信息】;然后,在拿这个修改过的原始对象,去更新数据库;
如果,我们直接拿前端传过来的对象去更新,轻则程序报错,重则数据产生混乱;
……………………………………………………
(4)启动Tomcat,观察效果;
至此,图书修改功能就完成了;下篇博客将介绍图书删除功能;