001 图书增删改查 SSM MySQL

技术框架:Spring + SpringMVC + Mybatis + JSP + MySQL

001 图书增删改查 SSM MySQL

package com.demo.controller;import com.demo.pojo.Book;
import com.demo.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import java.util.List;@Controller
@RequestMapping("/books")
public class BookController {@Autowiredprivate BookService bookService;//查询全部的书籍,并且返回到一个书籍展示@RequestMapping("allBook")public String list(Model model,Integer bookId) {List<Book> list = bookService.queryAllBooks(bookId);model.addAttribute("bookList", list);return "book";}//跳转到增加书籍页面@RequestMapping("/toAddBook")public String toAddPager() {return "addBook";}//添加书籍的请求@RequestMapping("/addBook")public String addBook(Book books) {bookService.addBook(books);return "redirect:/books/allBook";//重定向allBook请求}//跳转到修改书籍页面@RequestMapping("/toUpdate")public String toUpdatePager(int id, Model model) {Book books = bookService.findBookById(id);model.addAttribute("book", books);return "updateBook";}//修改书籍@RequestMapping("/updateBook")public String updateBook(Book books) {int i = bookService.updateBook(books);if (i > 0) {System.out.println("添加成功" + books);}return "redirect:/books/allBook";}//删除数据@RequestMapping("/deleteBook/{bookId}")public String deleteBook(@PathVariable("bookId") int id) {bookService.deleteBook(id);return "redirect:/books/allBook";}}
package com.demo.dao;import com.demo.pojo.Book;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface BookMapper {int addBook(Book book);int deleteBook( int id);int updateBook(Book book);Book findBookById(Integer id);List<Book> queryAllBook(@Param("bookId") Integer bookId);
}
package com.demo.pojo;import lombok.Data;@Data
public class Book {private Integer id;	//图书idprivate String name;		//图书名称private String press;		//出版社private String author;		//作者}
package com.demo.service;
import com.demo.pojo.Book;import java.util.List;public interface BookService {Book findBookById(Integer id);List<Book> queryAllBooks(Integer bookId);int addBook(Book book);int updateBook(Book book);int deleteBook(Integer id);
}
package com.demo.service.impl;import com.demo.dao.BookMapper;
import com.demo.pojo.Book;
import com.demo.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class BookServiceImpl implements BookService {private final BookMapper bookMapper;@Autowiredpublic BookServiceImpl(BookMapper bookMapper) {this.bookMapper = bookMapper;}@Overridepublic Book findBookById(Integer id) {return bookMapper.findBookById(id);}@Overridepublic List<Book> queryAllBooks(Integer bookId) {return bookMapper.queryAllBook(bookId);}@Overridepublic int addBook(Book book) {return bookMapper.addBook(book);}@Overridepublic int updateBook(Book book) {return bookMapper.updateBook(book);}@Overridepublic int deleteBook(Integer id) {return bookMapper.deleteBook(id);}
}
/*Navicat Premium Data TransferSource Server         : 127.0.0.1(5.7.40)Source Server Type    : MySQLSource Server Version : 50740Source Host           : localhost:3305Source Schema         : ssmTarget Server Type    : MySQLTarget Server Version : 50740File Encoding         : 65001Date: 18/12/2023 21:10:14
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for tb_book
-- ----------------------------
DROP TABLE IF EXISTS `tb_book`;
CREATE TABLE `tb_book`  (`id` int(2) NOT NULL AUTO_INCREMENT,`name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`press` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`author` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;-- ----------------------------
-- Records of tb_book
-- ----------------------------
INSERT INTO `tb_book` VALUES (1, '12121', '212', '12121');SET FOREIGN_KEY_CHECKS = 1;
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.demo.dao.BookMapper"><!-- 添加图书信息 --><insert id="addBook" parameterType="com.demo.pojo.Book">insert into tb_book(name, press, author) values (#{name}, #{press}, #{author})</insert><!-- 删除图书信息 --><delete id="deleteBook" parameterType="int">delete from tb_book where id = #{id}</delete><!-- 更新图书信息 --><update id="updateBook" parameterType="com.demo.pojo.Book">update tb_book set name=#{name}, press=#{press}, author=#{author} where id=#{id}</update><!-- 根据ID查询图书信息 --><select id="findBookById" resultType="com.demo.pojo.Book">select * from tb_book where id = #{id}</select><!-- 查询所有图书信息 --><select id="queryAllBook" resultType="com.demo.pojo.Book">select * from tb_book<where><if test="bookId != null">AND id = #{bookId}</if></where></select>
</mapper>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Log4net 教程

一、Log4net 教程 在CodeProject上找到一篇关于Log4net的教程&#xff1a;log4net Tutorial&#xff0c;这篇博客的作者是&#xff1a;Tim Corey &#xff0c;对应源代码地址为&#xff1a; https://github.com/TimCorey/Log4netTutorial&#xff0c;视频地址为&#xff1a;Ap…

C#上位机与欧姆龙PLC的通信04---- 欧姆龙plc的存储区

1、存储区概念 欧姆龙PLC将整个数据存储器分为10个区&#xff1a;输入继电器区、输出继电器区、内部辅助继电器区、特殊继电器区、保持继电器区、暂存继电器区、定时/计数器区、数据存储区、辅助存储继电器区、链接继电器区。 输入输出继电器区 CP1E系列PLC输入继电器区有16…

acwing linux 第七讲 环境变量、管道、常用命令、附录

文章目录 管道 概念 要点 举例 环境变量 查看 修改 常用环境变量 常用命令 系统状况 文件权限 文件检索 查看文件内容 用户相关 其他工具 安装软件 附录 Linux权限 本节课讲解的是管道&#xff0c;环境变量&#xff0c;以及常用命令 管道 概念 管道类似文…

tomcat剖析:开篇

一、简介 本专栏为解析tomcat的专栏&#xff0c;用于一步步的从构建到执行&#xff0c;再到剖析tomcat的内部构造&#xff0c;然后再加上自己的理解&#xff0c;从0到1去认识我们日常开发中不可或缺的web容器&#xff0c;希望对之后的软件设计能够有所启示。 二、步骤 2.1构…

服务器运维 专有名词

专有名词 云上虚拟私有云&#xff08;Virtual Private Cloud&#xff0c;VPC&#xff09; IDC机房 专线 Kubernetes集群搭建以及基本使用【具详细】 有了docker为什么还需要k8s https://blog.csdn.net/qq_44930876/article/details/125271942

Qt/C++视频监控Onvif工具/组播搜索/显示监控画面/图片参数调节/OSD管理/祖传原创

一、前言 能够写出简单易用而又不失功能强大的组件&#xff0c;一直是我的追求&#xff0c;简单主要体现在易用性&#xff0c;不能搞一些繁琐的流程和一些极难使用的API接口&#xff0c;或者一些看不懂的很难以理解的函数名称&#xff0c;一定是要越简单越好。功能强大主要体现…

即将来临的2024年,汽车战场再起波澜?

我们来简要概况一下11月主流车企的销量表现&#xff1a; 根据数据显示&#xff0c;11月吉利集团总销量29.32万辆&#xff0c;同比增长28%。这在当月国内主流车企中综合实力凌厉&#xff0c;可谓表现得体。而与吉利直接竞争的比亚迪&#xff0c;尽管数据未公布&#xff0c;但我们…

【Linux/gcc】C/C++——编译过程

前提&#xff1a;WSL2&#xff08;Ubuntu&#xff09;、gcc编译器。gcc安装命令&#xff1a; sudo apt-get install gcc 查看gcc版本&#xff1a; 目录 1、编译过程 1.1、预处理 1.2、编译与汇编 1.3、链接 2、gcc实验 2.1、预处理 2.2、编译 2.3、汇编 2.4、链接 1、…

XSKY星辰天合星海架构荣获 IT168 “2023 年度技术卓越奖”

近日&#xff0c;"2023 年度技术卓越奖"获奖名单公布&#xff0c;XSKY 星辰天合的星海架构&#xff08;XSEA&#xff0c;极速全共享架构&#xff09;获得行业 CIO/CTO 大咖、技术专家及 IT 媒体三方认可&#xff0c;成功入选&#xff01; “技术卓越奖”评选由国内著…

2. 结构型模式 - 桥接模式

亦称&#xff1a; Bridge 意图 桥接模式是一种结构型设计模式&#xff0c; 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构&#xff0c; 从而能在开发时分别使用 问题 抽象&#xff1f; 实现&#xff1f; 听上去挺吓人&#xff1f; 让我们慢慢来&#x…

模式识别与机器学习(十):梯度提升树

1.原理 提升方法实际采用加法模型&#xff08;即基函数的线性组合&#xff09;与前向分步算法。以决策树为基函数的提升方法称为提升树&#xff08;boosting tree&#xff09;。对分类问题决策树是二叉分类树&#xff0c;对回归问题决策树是二叉回归树。提升树模型可以表示为决…

uniapp怎么动态渲染导航栏的title?

直接在接口请求里面写入以下&#xff1a; 自己要什么参数就写什么参数 本人仅供参考&#xff1a; this.name res.data.data[i].name; console.log(名字, res.data.data[i].name); uni.setNavigationBarTitle({title: this.name}) 效果&#xff1a;

【Proteus仿真】【Arduino单片机】智能垃圾桶设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用报警模块、LCD1602液晶模块、按键模块、人体红外传感器、HCSR04超声波、有害气体传感器、SG90舵机等。 主要功能&#xff1a; 系统运行后&am…

14、Qt使用Eigen3

一、下载Eigen Eigen 二、创建项目 创建一个"Qt Widget Application"项目&#xff0c;基类选择“QMainWindow“&#xff0c;把Eigen拷贝到项目中 三、更改代码 在.pro中添加 INCLUDEPATH $$PWD\Eigen 在界面上添加一个pushButton&#xff0c;并转到槽&#xff0…

7-3 求完数

整数6的因子包括1、2和3&#xff0c;巧合的是6123&#xff0c;像6这样所有因子之和恰好等于自身的数称为“完数”。 编写程序找出m至n之间的所有完数。 输入格式: 请在这里写输入格式。例如&#xff1a;输入两个正整数m 、n&#xff0c;要求 m < n <10000。 输出格式…

111基于matlab的粒子滤波进行锂离子电池的循环寿命预测

基于matlab的粒子滤波进行锂离子电池的循环寿命预测&#xff0c;输出实验、粒子滤波及自然预测数据结果。程序已调通&#xff0c;可直接运行。 111matlab锂离子电池寿命预测 (xiaohongshu.com)

在C#中使用OpenCV获取图像的轮廓

导入必要的NuGet包&#xff1a; 首先&#xff0c;你需要在你的C#项目中安装OpenCV的NuGet包。你可以通过在NuGet包管理器中搜索"Emgu.CV"并安装来实现。 加载图像&#xff1a; 使用Emgu.CV库加载图像。 using Emgu.CV; using Emgu.CV.Structure;// 加载图像 Image&l…

JavaEE:CAS详解

一.什么是CAS CAS: 全称 Compare and swap &#xff0c;字面意思 :” 比较并交换 “ &#xff0c;一个 CAS 涉及到以下操作&#xff1a; 我们假设内存中的原数据V&#xff0c;旧的预期值A&#xff0c;需要修改的新值B。 我们来进行操作&#xff1a; 1. 比较 V 和 A 是否相等。…

代码随想录算法训练营第二十天| 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

代码随想录算法训练营第二十天| 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树 题目 654.最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值…

蓝桥杯第二场小白入门赛(1~5)(对不起,我线段树太菜了)

1.模拟 2.贪心 3.二分 4.数论 5.数论 6.线段树&#xff08;线段树还是练少了...&#xff09; 1. 蓝桥小课堂-平方和 直接模拟&#xff0c;注意数据范围 #include <bits/stdc.h> using namespace std; #define LL long long #define pb push_back #define x first …