bookmapper类:
@Repository
public interface BookMapper {
//新增
void insertBookMapper(BookUpdateReqVo bookUpdateReqVo);
//查询
Book selectBookMapper(String id);
//修改
void updateBookMapper(Book book);
//删除
void deleteBookMapper(String id);
//查询全部图书信息
List<Book> selectAllBook();
}
re'socurces中的bookmapper。xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qm.mapper.BookMapper">
<resultMap id="selectBookMap" type="com.qm.po.Book">
<result column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="author" jdbcType="VARCHAR" property="author" />
<result column="publish" jdbcType="VARCHAR" property="publish" />
<result column="publishdate" jdbcType="DATE" property="publishdate" />
<result column="page" jdbcType="INTEGER" property="page" />
<result column="price" jdbcType="INTEGER" property="price" />
<result column="content" jdbcType="VARCHAR" property="content" />
</resultMap>
<insert id="insertBookMapper" parameterType="com.qm.Vo.BookUpdateReqVo">
insert into book (id,name,author,publish,publishdate,page,price,content
)
values (#{id},#{name},#{author},#{publish},#{publishdate},#{page},#{price},#{content}
)
</insert>
<insert id="addGoods" keyProperty="id" useGeneratedKeys="true">
insert into book(id) values (#{id})
</insert>
<select id="selectBookMapper" parameterType="java.lang.String" resultType="Book">
select id,name,author,publish,publishdate,page,price,content
from book
where id = #{id}
</select>
<update id="updateBookMapper" parameterType="Book">
update book
set
name = #{name},
author = #{author},
publish = #{publish},
publishdate = #{publishdate},
page = #{page},
price = #{price},
content = #{content}
where id = #{id}
</update>
<delete id="deleteBookMapper" parameterType="java.lang.String">
delete from book where id = #{value}
</delete>
<select id="selectAllBook" resultMap="selectBookMap">
select id,name,author,publish,publishdate,page,price,content
from book
</select>
</mapper>
po类:
@Data
public class Book {
private int id;
private String name;
private String author;
private String publish;
private Date publishdate;
private int page;
private int price;
private String content;
}
bookservice中的接口:
public interface IBookService {
/**
* 新增数据
* @param book
*/
void insertBookService(BookUpdateReqVo bookUpdateReqVo);
/**
* 通过id查询某条数据
* @return
*/
Book selectBookSerivce(String id);
/**
* 修改数据
* @param book
*/
void updateBookService(Book book);
/**
* 删除数据
* @param id
*/
void deleteBookService(String id);
/**
* 查询全部信息
* @return
*/
List<Book> selectAllBook();
}
bookservice类中:
@Service
public class BookSerivceImpl implements IBookService {
@Autowired
private BookMapper bookMapper;
public void insertBookService(BookUpdateReqVo bookUpdateReqVo) {
// book.setPublishdate(new Date(System.currentTimeMillis()));
bookMapper.insertBookMapper(bookUpdateReqVo);
}
public Book selectBookSerivce(String id) {
return bookMapper.selectBookMapper(id);
}
public void updateBookService(Book book) {
bookMapper.updateBookMapper(book);
}
public void deleteBookService(String id) {
bookMapper.deleteBookMapper(id);
}
//查询全部图书信息
public List<Book> selectAllBook() {
List<Book> books = bookMapper.selectAllBook();
return books;
}
}
bookcontroller中的:
@Controller
@RequestMapping("/book")
public class BookController {
@Autowired
private IBookService bookSerivce;
@GetMapping("insetin")
public String insetin(){
return "inset";
}
@PostMapping("into")
public String insetBookController(BookUpdateReqVo bookUpdateReqVo){;
bookSerivce.insertBookService(bookUpdateReqVo);
return "index";
}
@GetMapping("sel")
public String selectBookController(String id,HttpSession session){
Book book = bookSerivce.selectBookSerivce(id);
Date publishdate = book.getPublishdate();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String parse = format.format(publishdate);
BookUpdateReqVo bookVo = BeanUtil.copyProperties(book, BookUpdateReqVo.class);
bookVo.setPublishdate(parse);
session.setAttribute("book",bookVo);
return "update";
}
@PostMapping("/upd")
public String updateBookController(BookUpdateReqVo bookUpdateReqVo) throws ParseException {
String date = bookUpdateReqVo.getPublishdate();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date parse = format.parse(date);
Book book= BeanUtil.copyProperties(bookUpdateReqVo,Book.class);
book.setPublishdate(parse);
bookSerivce.updateBookService(book);
return "index";
}
@ResponseBody
@PostMapping("/del")
public String deleteBookController(String id){
bookSerivce.deleteBookService(id);
return "success";
}
//查询全部图书信息
@ResponseBody
@GetMapping("/all")
public PageInfo<List> selectAllBook(PageVo pageVo){
PageHelper.startPage(pageVo.getPageNum(),pageVo.getPageSize());
List books = bookSerivce.selectAllBook();
PageInfo<List> bookPageInfo = new PageInfo<List>(books);
return bookPageInfo;
}
}
改变时间字符的vo类:
@Data
public class BookUpdateReqVo {
private int id;
private String name;
private String author;
private String publish;
private String publishdate;
private int page;
private int price;
private String content;
}
主页界面:
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2023/2/2 0002
Time: 11:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>登陆页面</title>
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<!-- 引入 font-awesome -->
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<title>首页</title>
<style>
.center {
margin-left: auto;
margin-right: auto;
}
</style>
<script>
var current=null;
var totalPage = 1;
function pageshow(pageNum,pageSize) {
//等待页面加载完毕,再执行
if (pageNum==0){
pageNum=1;
}
if (pageNum>totalPage){
pageNum=totalPage;
}
$.ajax({
method: 'get',
data: {pageNum:pageNum,pageSize:pageSize},
url: '/book/all',
success: function(respDate) {
current=respDate.pageNum;
$("#bookList").empty()
totalPage=respDate.pages;
var arr = respDate.list;
for (let i = 0; i < arr.length; i++) {
var json = arr[i];
$("#bookList").append("<tr id="+json.id+">" +
"<td>" + json.name + "</td>" +
"<td>" + json.author + "</td>" +
"<td>" + json.publish + "</td>" +
"<td>" + json.publishdate + "</td>" +
"<td>" + json.page + "</td>" +
"<td>" + json.price + "</td>" +
"<td>" + json.content + "</td>" +
"<td><a href='/book/sel?id="+json.id+"'>修改</a>" +
"<a onclick='del(\""+json.id+"\")'>删除</a></td>"+
"</tr>")
} //a标签用的是get类型请求
$("#bookList").append("<tr>"+
"<td><a href='/book/insetin'>新增图书</a></td><td> </td><td> </td>" +
"<td>一共"+(respDate.total)+"条</td><td><a onclick='pageshow("+(respDate.pageNum-1)+",3)'>上一页</a><a onclick='pageshow("+(respDate.pageNum+1)+",3)'>下一页</a></td></tr>")
},
error: function(errorDate) {
},
dataType: 'json'//$ajax方法会将响应数据转换成json对象
})
}
//匿名函数,当jsp页面的代码运行完毕后自动运行
$(function(){
pageshow(1,3);
})
//删除员工
function del(id){
$.ajax({
method: 'post',
data:{id:id},
url: "/book/del",
success:function (data){
if (data == "success"){
$("#"+id).remove();
pageshow(current,3);
}
},
error:function (data){
alert("删除失败")
},
dataType: 'text'
})
}
</script>
</head>
<body>
<div style="width: 600px;
margin-top: 150px;
font-size: 18px;
font-weight: bold;
text-align: center;" class="center">
图 书 列 表
</div>
<div style="width: 800px;
margin-left: auto;
margin-right: auto;
border: 1px;">
<table class="table table-hover">
<thead style="background-color: darkgray">
<th>书名</th>
<th>作者</th>
<th>出版社</th>
<th>出版日期</th>
<th> 页数</th>
<th>价格</th>
<th>内容摘要</th>
<th>操作</th>
</thead>
<tbody id="bookList"></tbody>
</table>
</div>
</body>
</html>
新增页面:
<%--
Created by IntelliJ IDEA.
User: 27141
Date: 2023/2/5
Time: 12:44
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>新增书籍页面</title>
<!-- 引入 Bootstrap-->
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<!-- 引入 font-awesome -->
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div>
<form action="/book/into" method="post">
书名:<input type="text" id="name" name="name">
作者:<input type="text" id="author" name="author">
出版社:<input type="text" id="publish" name="publish">
出版日期:<input type="date" name="publishdate">
页数:<input type="text" id="page" name="page">
价格:<input type="text" id="price" name="price">
内容摘要:<input type="text" id="content" name="content">
<input type="submit" value="提交" class="btn btn-primary">
</form>
</div>
</body>
</html>
登录界面:
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2023/2/2 0002
Time: 11:16
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>登陆页面</title>
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<!-- 引入 font-awesome -->
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<%-- $() //jquery 前端框架找某个元素--%>
<%-- ${} //el–%> jsp页面中获取session里的值--%>
<%-- #{} ognl –%> 这个是mybatis里的xml用的--%>
<script>
function submitForm(){
var username = $("#username").val();
var password = $("#password").val();
if (password.trim()!='' && username.trim()!=''){
return true;
}
alert("账号或密码不能为空");
return false;
}
</script>
</head>
<body>
<div style="width: 300px; margin-left: auto; margin-right: auto; margin-top: 150px; text-align: center; font-size:50px;">图书管理系统</div>
<div style="width: 300px; margin-left: auto; margin-right: auto; border:1px solid black " >
<form action="/user/login" method="post" style="width: 200px; margin-left:50px; margin-top: 50px;" onsubmit="return submitForm()" >
<div class="form-group">
账号:<input type="text" id="username" name="name" class="form-control" placeholder="输入账号">
</div>
<div class="form-group">
密码:<input type="password" id="password" name="password" class="form-control" placeholder="输入密码">
</div>
<div class="form-group">
<span style="color: red; <c:if test="${error == 'checkerror'}">display: block;</c:if><c:if test="${error != 'checkerror'}">display: none;</c:if>">用户名或密码错误!</span>
</div>
<button type="submit" class="btn btn-primary">登录</button>
</form>
</div>
</body>
</html>
修改页面:
<%--
Created by IntelliJ IDEA.
User: 27141
Date: 2023/2/5
Time: 12:44
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>修改书籍页面</title>
<!-- 引入 Bootstrap-->
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<!-- 引入 font-awesome -->
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div style="width: 300px; margin-left: auto; margin-right: auto; margin-top: 150px; border:0px solid black" >
<form action="/book/upd" method="post" style="width: 200px; margin-left:50px; margin-top: 50px;">
<input type="hidden" value="${book.id}" id="id" name="id">
书名:<input type="text" value="${book.name}" name="name"><br/>
作者:<input type="text" value="${book.author}" name="author"><br/>
出版社:<input type="text" value="${book.publish}" name="publish"><br/>
出版日期:<br/><input type="date" value="${book.publishdate}" name="publishdate"><br/>
页数:<input type="text" value="${book.page}" name="page"><br/>
价格:<input type="text" value="${book.price}" name="price"><br/>
内容摘要:<input type="text" value="${book.content}" name="content"><br/>
<input type="submit" class="btn btn-primary" value="提交">
</form>
</div>
</body>
</html>