文章目录

  • 前言
  • 项目逻辑
  • 一、Mapper层实现代码
    • 1.BookMapper.class
    • 2.BookMapper.xml
  • 二、Book数据类型
    • 1.Book.class
    • 2.MySQL
  • 三、Service层
    • 1、Service接口
    • 2、Service实现类
  • 四、Servlet层
  • 五、前端代码实现

前言


最近写了个课设,刚好刚学完javaweb需要巩固一下,课设内容是java增删改查,想睡觉有人送枕头了属于是,这里我是实现了增删改查,删除那里我就偷懒了,只写了批量删除。(实际上就是黑马项目套皮,不过我实现了修改功能,还是有点价值滴)

项目逻辑

后端写好Servlet服务,前端通过ajax申请服务,并将表中数据通过Servlet与后台数据库交互,从而达到前端和后端互通的效果。

一、Mapper层实现代码

1.BookMapper.class

代码如下(示例):

package com.MyJavaClass.mapper;import com.MyJavaClass.pojo.Book;
import org.apache.ibatis.annotations.*;import java.util.List;public interface BookMapper {@Select("select * from books")List<Book> selectAll();@Insert("insert into books values(null,#{bookName},#{writer},#{user},#{number},#{state})")void add(Book book);List<Book> selectBycondition();void deleteByIds(@Param("ids")int[] ids);@Select("select * from books limit #{begin}, #{size}")List<Book> selectByPage(@Param("begin")int begin,@Param("size") int size);@Select("select count(*) from books")int selectTotalCount();List<Book> selectByPageAndCondition(@Param("begin") int begin,@Param("size") int size,@Param("book") Book book);int selectTotalCountByCondition(Book book);@Update("update books set bookName = #{bookName}, writer = #{writer},user = #{user}, number = #{number}, state = #{state} where id = #{id}")void updateById(Book book);
}

2.BookMapper.xml

代码如下(示例):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.MyJavaClass.mapper.BookMapper"><select id="selectBycondition" resultType="com.MyJavaClass.pojo.Book">select * from books<where><if test=""></if></where></select><delete id="deleteByIds">delete from books where id in<foreach collection="ids" item="id" separator="," open="(" close=")">#{id}</foreach></delete><select id="selectByPageAndCondition" resultType="com.MyJavaClass.pojo.Book">select * from books<where><if test="book.number != null and book.number != '' ">and  number like #{book.number}</if><if test="book.bookName != null and book.bookName != '' ">and  bookName like #{book.bookName}</if><if test="book.writer != null and book.writer != '' ">and  writer like #{book.writer}</if><if test="book.state != null">and  state = #{book.state}</if></where>limit #{begin},#{size}</select><select id="selectTotalCountByCondition" resultType="java.lang.Integer">select count(*)from books<where><if test="number != null and number != '' ">and  number like #{number}</if><if test="bookName != null and bookName != '' ">and  bookName like #{bookName}</if><if test="writer != null and writer != '' ">and  writer like #{book.writer}</if><if test="state != null">and  state = #{state}</if></where></select>
</mapper>

二、Book数据类型

1.Book.class

    Integer id;String number;String bookName ;String writer ;String user ;Integer state ;

2.MySQL


id int PRIMARY KEY auto_increment,bookName varchar(20),writer varchar(20),user varchar(20),number varchar(20),state INT

三、Service层

1、Service接口

文件名:BookService

package com.MyJavaClass.service;import com.MyJavaClass.pojo.Book;
import com.MyJavaClass.pojo.PageBean;import java.util.List;public interface BookService {List<Book> selectAll();void add(Book book);void deleteByIds(int[] ids);PageBean<Book> selectByPage(int currentPage,int pageSize);PageBean<Book> selectByPageAndCondition(int currentPage,int pageSize,Book book);void updateById(Book book);
}

2、Service实现类

文件名:BookServiceimpl

package com.MyJavaClass.service.impl;import com.MyJavaClass.mapper.BookMapper;
import com.MyJavaClass.pojo.Book;
import com.MyJavaClass.pojo.PageBean;
import com.MyJavaClass.service.BookService;
import com.MyJavaClass.util.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import java.util.List;public class BookServiceimpl implements BookService {SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();public List<Book> selectAll(){SqlSession sqlSession = factory.openSession();BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);List<Book> books = bookMapper.selectAll();sqlSession.close();return books;}public void add(Book book){SqlSession sqlSession = factory.openSession();BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);bookMapper.add(book);sqlSession.commit();sqlSession.close();}public void deleteByIds(int[] ids){SqlSession sqlSession = factory.openSession();BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);bookMapper.deleteByIds(ids);sqlSession.commit();sqlSession.close();}@Overridepublic PageBean<Book> selectByPage(int currentPage, int pageSize) {SqlSession sqlSession = factory.openSession();BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);int begin = (currentPage - 1) * pageSize;int size = pageSize;List<Book> rows = bookMapper.selectByPage(begin,size);int totalCount = bookMapper.selectTotalCount();PageBean<Book> pageBean = new PageBean<>();pageBean.setRows(rows);pageBean.setTotalCount(totalCount);sqlSession.close();return pageBean;}@Overridepublic PageBean<Book> selectByPageAndCondition(int currentPage, int pageSize, Book book) {SqlSession sqlSession = factory.openSession();BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);int begin = (currentPage - 1) * pageSize;int size = pageSize;String number = book.getNumber();if(number != null && number.length()>0){book.setNumber("%" + number + "%");}String bookName = book.getBookName();if(bookName != null && bookName.length()>0){book.setBookName("%" + bookName + "%");}String writer = book.getWriter();if(writer != null && writer.length()>0){book.setWriter("%" + writer + "%");}List<Book> rows = bookMapper.selectByPageAndCondition(begin,size,book);int totalCount = bookMapper.selectTotalCountByCondition(book);PageBean<Book> pageBean = new PageBean<>();pageBean.setRows(rows);pageBean.setTotalCount(totalCount);sqlSession.close();return pageBean;}public void updateById(Book book){SqlSession sqlSession = factory.openSession();BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);bookMapper.updateById(book);sqlSession.commit();sqlSession.close();}
}

四、Servlet层

文件名:BookServlet.class

package com.MyJavaClass.web;import com.MyJavaClass.pojo.Book;
import com.MyJavaClass.pojo.PageBean;
import com.MyJavaClass.service.BookService;
import com.MyJavaClass.service.impl.BookServiceimpl;
import com.alibaba.fastjson.JSON;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.List;@WebServlet("/Book/*")
public class BookServlet extends BaseServlet{private BookService bookService = new BookServiceimpl();public void selectAll(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException{List<Book> books = bookService.selectAll();String jsonString = JSON.toJSONString(books);resp.setContentType("text/json;charset=utf-8");resp.getWriter().write(jsonString);}public void add(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{BufferedReader br = req.getReader();String params = br.readLine();Book book = JSON.parseObject(params,Book.class);bookService.add(book);resp.getWriter().write("success");}public void deleteByIds(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{BufferedReader br = req.getReader();String params = br.readLine();int[] ids = JSON.parseObject(params,int[].class);bookService.deleteByIds(ids);resp.getWriter().write("success");}public void selectByPage(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{String _currentPage = req.getParameter("currentPage");String _pageSize = req.getParameter("pageSize");int currentPage = Integer.parseInt(_currentPage);int pageSize = Integer.parseInt(_pageSize);//2. 调用service查询PageBean<Book> pageBean = bookService.selectByPage(currentPage, pageSize);//2. 转为JSONString jsonString = JSON.toJSONString(pageBean);//3. 写数据resp.setContentType("text/json;charset=utf-8");resp.getWriter().write(jsonString);}public void selectByPageAndCondition(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{String _currentPage = req.getParameter("currentPage");String _pageSize = req.getParameter("pageSize");int currentPage = Integer.parseInt(_currentPage);int pageSize = Integer.parseInt(_pageSize);BufferedReader br = req.getReader();String params = br.readLine();Book book = JSON.parseObject(params,Book.class);PageBean<Book> pageBean = bookService.selectByPageAndCondition(currentPage,pageSize,book);String jsonString = JSON.toJSONString(pageBean);resp.setContentType("text/json;charset=utf-8");resp.getWriter().write(jsonString);}public void updateById(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{//        String id = req.getParameter("id");BufferedReader br = req.getReader();String params = br.readLine();Book book = JSON.parseObject(params, Book.class);if(book!=null){System.out.println("ok");System.out.println(book);}else System.out.println("no");bookService.updateById(book);resp.getWriter().write("success");}
}

五、前端代码实现

文件名:Book.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.el-table .warning-row {background: oldlace;}.el-table .success-row {background: #f0f9eb;}body{background:url("img/p.png") no-repeat center top;background-size:cover;background-attachment:fixed;opacity:0.75;}</style></head>
<body>
<div id="app"><!--搜索表单--><el-form :inline="true" :model="book" class="demo-form-inline"><el-form-item label="当前状态"><el-select v-model="book.state" placeholder="当前状态"><el-option label="在库中" value="1"></el-option><el-option label="未在库中" value="0"></el-option></el-select></el-form-item><el-form-item label="书籍编号"><el-input v-model="book.number" placeholder="书籍编号"></el-input></el-form-item><el-form-item label="书籍名称"><el-input v-model="book.bookName" placeholder="书籍名称"></el-input></el-form-item><el-form-item label="作者"><el-input v-model="book.writer" placeholder="作者"></el-input></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item></el-form><!--按钮--><el-row><el-button type="danger" plain @click="deleteByIds">批量删除</el-button><el-button type="primary" plain @click="dialogVisible = true">新增</el-button><el-button type="success" onclick="window.location.href='student.html'"plain>学生信息查询</el-button></el-row><!--添加数据对话框表单--><el-dialogtitle="新增书籍":visible.sync="dialogVisible"width="30%"><el-form ref="form" :model="book" label-width="80px"><el-form-item label="书籍编号"><el-input v-model="book.number"></el-input></el-form-item><el-form-item label="书籍名称"><el-input v-model="book.bookName"></el-input></el-form-item><el-form-item label="作者"><el-input v-model="book.writer"></el-input></el-form-item><el-form-item label="借阅人"><el-input v-model="book.user"></el-input></el-form-item><el-form-item label="状态"><el-switch v-model="book.state"active-value="1"inactive-value="0"></el-switch></el-form-item><el-form-item><el-button type="primary" @click="addBrand">提交</el-button><el-button @click="dialogVisible = false">取消</el-button></el-form-item></el-form></el-dialog><el-dialogtitle="修改书籍":visible.sync="dialog2Visible"width="30%"><el-form ref="form" :model="brandSelect" label-width="80px"><el-form-item label="书籍编号"><el-input v-model="brandSelect.number"></el-input></el-form-item><el-form-item label="书籍名称"><el-input v-model="brandSelect.bookName"></el-input></el-form-item><el-form-item label="作者"><el-input v-model="brandSelect.writer"></el-input></el-form-item><el-form-item label="借阅人"><el-input v-model="brandSelect.user"></el-input></el-form-item><el-form-item label="状态"><el-switch v-model="brandSelect.state"active-value="1"inactive-value="0"></el-switch></el-form-item><el-form-item><el-button type="primary" @click="update">提交</el-button><el-button @click="dialog2Visible = false">取消</el-button></el-form-item></el-form></el-dialog><!--表格--><template ><el-table:data="tableData"style="width: 100%":row-class-name="tableRowClassName"@selection-change="handleSelectionChange"><el-table-columntype="selection"width="55"></el-table-column><el-table-columntype="index"width="50"></el-table-column><el-table-columnprop="number"label="书籍编号"align="center"></el-table-column><el-table-columnprop="bookName"label="书籍名称"align="center"></el-table-column><el-table-columnprop="writer"align="center"label="作者"></el-table-column><el-table-columnprop="state"align="center"label="当前状态"></el-table-column><el-table-columnprop="user"align="center"label="借阅人"></el-table-column><el-table-columnalign="center"label="操作"><template slot-scope="scope"><el-row><el-button type="primary"@click="brandShow(scope.row)">修改</el-button></el-row></template></el-table-column></el-table></template><!--分页工具条--><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[5, 10, 15, 20]":page-size="5"layout="total, sizes, prev, pager, next, jumper":total="totalCount"></el-pagination></div><script src="js/axios-0.18.0.js"></script>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css"><script>new Vue({el: "#app",mounted(){<!--     //当页面加载完成后,发送异步请求,获取数据-->
<!--     var _this = this;-->
<!--     axios({-->
<!--         method:"get",-->
<!--         url:"http://localhost:8080/curriculumDesign/Book/selectAll"-->
<!--     }).then(function (resp) {-->
<!--         _this.tableData = resp.data;-->
<!--     })-->
this.selectAll();},     methods: {//根据id查询selectAll(){var _this = this;
axios({method:"post",url:"http://localhost:8080/curriculumDesign/Book/selectByPage?currentPage="+this.currentPage+"&pageSize=" + this.pageSize
}).then(resp =>{//设置表格数据_this.tableData = resp.data.rows; // {rows:[],totalCount:100}//设置总记录数_this.totalCount = resp.data.totalCount;
})
},tableRowClassName({row, rowIndex}) {if (rowIndex === 1) {return 'warning-row';} else if (rowIndex === 3) {return 'success-row';}return '';},// 复选框选中后执行的方法handleSelectionChange(val) {this.multipleSelection = val;console.log(this.multipleSelection)},
brandShow(row) {// 获取数据this.brandSelect = row;console.log(this.book);// 弹出窗口this.dialog2Visible = true;console.log(this.dialog2Visible);this.selectAll();
},update(){var _this = this;axios({method:"post",url:"http://localhost:8080/curriculumDesign/Book/updateById",data:_this.brandSelect //这是提交的表单数据}).then(function (resp){//这里是success数据if(resp.data == "success"){//添加成功_this.dialog2Visible = false;console.log("修改成功!");//重新查询数据进行显示_this.selectAll();_this.$message({message: '恭喜你,修改成功',type: 'success'});}else{_this.$message.error('修改失败');}})},// 查询方法onSubmit() {axios({method:"post",url:"http://localhost:8080/curriculumDesign/Book/selectByPageAndCondition?currentPage="+this.currentPage+"&pageSize="+this.pageSize,data:this.book
}).then((resp) => {//设置表格数据this.tableData = resp.data.rows; // {rows:[],totalCount:100}//设置总记录数this.totalCount = resp.data.totalCount;
})},// 添加数据addBrand(){var _this = this;// 发送ajax请求,添加数据axios({method:"post",url:"http://localhost:8080/curriculumDesign/Book/add",data:_this.book}).then(function (resp) {//响应数据的处理逻辑if(resp.data == "success"){//添加成功//关闭窗口_this.dialogVisible = false;// 重新查询数据_this.selectAll();// 弹出消息提示_this.$message({message: '恭喜你,添加成功',type: 'success'});}})},deleteByIds(){// 弹出确认提示框this.$confirm('此操作将删除该数据, 是否继续?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {//用户点击确认按钮//1. 创建id数组 [1,2,3], 从 this.multipleSelection 获取即可for (let i = 0; i < this.multipleSelection.length; i++) {let selectionElement = this.multipleSelection[i];this.selectedIds[i] = selectionElement.id;}//2. 发送AJAX请求var _this = this;// 发送ajax请求,添加数据axios({method:"post",url:"http://localhost:8080/curriculumDesign/Book/deleteByIds",data:_this.selectedIds}).then(function (resp) {if(resp.data == "success"){//删除成功// 重新查询数据_this.selectAll();// 弹出消息提示_this.$message({message: '恭喜你,删除成功',type: 'success'});}})}).catch(() => {//用户点击取消按钮this.$message({type: 'info',message: '已取消删除'});});
},//分页handleSizeChange(val) {this.pageSize  = val;this.selectAll();},handleCurrentChange(val) {this.currentPage  = val;this.selectAll();}},data() {return {// 当前页码// 每页显示的条数pageSize:5,// 总记录数totalCount:100,// 当前页码currentPage: 1,// 添加数据对话框是否展示的标记dialogVisible: false,dialog2Visible: false,
<!--                Integer id;-->
<!--    String number;-->
<!--    -->
<!--    String bookName ;-->
<!--    String writer ;-->
<!--    String user ;-->
<!--    Integer state ;-->book:{state:'',bookName:'',user:'',writer:'',number:"",id:""},brandSelect:{state:'',bookName:'',user:'',writer:'',number:"",id:""},// 品牌模型数据brand: {status: '',brandName: '',companyName: '',id:"",ordered:"",description:""},// 复选框选中数据集合multipleSelection: [],selectedIds:[],// 表格数据tableData: [{number:"ccsu123",bookName: '华为',writer: '老人与海',state: '1',user:"唐涛",id:'1'}]}}})</script></body>
</html>

# 总结
以上就是全部代码了,做起来并不复杂,一两天就能做完,在熟练的情况下不到一天就能弄完。
页面如下![页面图![在这里插入图片描述](https://img-blog.csdnimg.cn/32a148257ba0445bb2ff71a455e2561e.png#pic_center)

【课设】图书管理系统相关推荐

  1. C++期末课设—图书管理系统

    期末将至,还有人为不知道如何写课设而头疼吗,这里给大家带来一个最简单基础的课设项目,图书管理系统. 功能分析 一般来说,简单的图书管理系统有以下几个功能: 1.用户管理 2.读者管理 3.图书管理 4 ...

  2. Java——课设——图书管理系统实现 2.0

    Java--图书管理系统 系统简介 1.本系统存有书籍信息与管理员.用户账号.管理员与用户(教师.学生)可以使用本系统. 2.系统数据存有以学号.工号为编号的空账号,用户可以输入工号.学号进行注册,管 ...

  3. C语言课设-----工资管理系统(附全部源码)

    C语言课设-----工资管理系统(附全部源码) 本系统分三个部分: 1.出售金鱼 2.数字菱形 3.工资管理系统 (ps:另外添加了登录界面 id:qwq password:123 可自己在代码里再更 ...

  4. C语言课设——图书信息管理系统

    其实这个题目要实现的功能比较清晰,主要就是文件和链表的操作以及基于这两个基础上的填删改查等功能,当然也可以添加一些个性化的功能,比如按照图书的检索量来对库存的图书进行热度的排序. 以下是我的这个图书管 ...

  5. C语言程序设计课设——图书出入库管理系统

    图书出入库管理系统 C语言程序设计课设 说是C语言程序设计的课设,实际上和上学期的数构的课设没什么区别,换了个系统而已,也不知道学校老师为啥要多一门这个课设.不过还是有所收获的,会改了很多常见的BUG ...

  6. 软件工程课设-----日程管理系统

    这学期进行了软件工程课设,题目是:日程管理系统(JavaWeb),为期3周.这三周只有前两天是企业老师讲解是企业老师讲解相关的基础知识(老师讲的水平实在是不可恭维......). 多的不多说.直接进行 ...

  7. C语言课设物资管理系统,C语言课设之物资管理系统.doc

    C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...

  8. java初级内容结课项目——图书管理系统

    在前面的十三课中,笔者已经介绍了有关java的各种语法及其细节.若要融会贯通,则还需大量的练习,而非单纯的依赖于笔记中的内容.毕竟"纸上得来终觉浅,绝知此事要躬行".在java语法 ...

  9. 关于C语言课设学生管理系统的编写(简单版)

    课设要求 根据课设要求,我们需要给我们的管理系统增加以下功能:1,菜单方式工作:2,录入功能:3,浏览功能:4,查询功能:5,排序功能:6,删除功能:7,修改功能:8,保存功能. 我们将用模块化的思想 ...

  10. 数据库系统课设--人事管理系统

    前言 本博客内容为课设内容,在这里仅提供思路和代码给大家参考,请不要轻易抄袭,最好理解代码并自己实现题目的要求,锻炼自己的编程和逻辑能力.另外,本次的课程设计我是用命令行操作mysql数据库,使用ID ...

最新文章

  1. android2.2编译,Android NDK编译Box2D_V2.2
  2. 测试在MicroPython中对于main.py进行修改
  3. saltStack运维工具的部署及master迁移实现的过程详解
  4. 在 Java 中高效使用锁的技巧--转载
  5. 【bzoj2154】Crash的数字表格 莫比乌斯反演
  6. linux系统回收站功能的实现
  7. 贷款时,如何评估借款人的还款意愿
  8. 快速计算整数的二进制表示法中1的个数
  9. HierarchicalBeanFactory
  10. 高等数学上-赵立军-北京大学出版社-题解-练习5.1
  11. Airbnb 宣布弃用 React Native!
  12. TCP/IP协议栈的封装
  13. Java连接Redis (key-value存储系统)
  14. 专题七:MATLAB符号计算
  15. zabbix2.4监控mysql_Zabbix 2.4.5自带MySQL监控的配置使用教程
  16. MNIST数据集使用详解
  17. 以太网进化历程半景-从10Mbps到1Tbps
  18. 江南大学c语言课程绩点评分,江南大学无锡医学院课程考核档案管理办法
  19. html5实例异步图片加载,JS+html5实现异步上传图片显示上传文件进度条功能示例...
  20. 用人工智能设计超酷T恤,除了那专属感,还透露了这些时装设计大趋势 || 万有AI...

热门文章

  1. PPT基础(二十六)参考线和辅助线
  2. [Excel]Excel函数和用法(1)——绝对引用“$“的用法
  3. 轻松卸载nodejs和npm
  4. matlab用摄像头拍照,使用MATLAB调用摄像头并拍照—详细代码
  5. 《从Paxos到Zookeeper 分布式一致性原理与实践》
  6. IDEA项目构建失败com.google.inject.CreationException: Unable to create injector
  7. 机器学习: 如何防止过拟合
  8. 海龟turtle——“一箭穿心”
  9. oracle如何通过同义词定位对象
  10. Android 11适配指南之系统相机拍照、打开相册,安卓app开发教程