一、数据库设计
数据库比较简单,只有一个表,表中的字段包括id、图书名称、图书作者和图书售价
二、项目目录结构
三、controller层
package com.lyh.controller;
import com.lyh.domain.Book;
import com.lyh.service.impl.BookServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* @author martin
* @date 2020/11/6
**/
@Controller
public class BookController {
private BookServiceImpl bookService;
@Autowired
public void setBookService(BookServiceImpl bookService) {
this.bookService = bookService;
}
@RequestMapping("/add")
public String pageAdd() {
return "add";
}
@RequestMapping("/search")
public String pageSearch(Model model) {
List<Book> list = bookService.findAll();
model.addAttribute("list", list);
return "search";
}
@RequestMapping("/update")
public String pageUpdate() {
return "update";
}
@RequestMapping("/delete")
public String pageDelete() {
return "delete";
}
@RequestMapping("/book/add")
public void bookAdd(Book book, HttpServletResponse response) {
response.setContentType("text/html;charset=utf-8");
try {
if (bookService.addBook(book) > 0) {
response.getWriter().print("添加成功!");
} else {
response.getWriter().print("添加失败!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping("book/delete")
public void bookDelete(String name, HttpServletResponse response) {
response.setContentType("text/html;charset=utf-8");
try {
if (bookService.deleteBook(name) > 0) {
response.getWriter().print("删除成功!");
} else {
response.getWriter().print("删除失败!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping("book/update")
public void bookUpdate(Book book, HttpServletResponse response) {
response.setContentType("text/html;charset=utf-8");
try {
if (bookService.updateBook(book) > 0) {
response.getWriter().print("修改成功!");
} else {
response.getWriter().print("修改失败!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
四、dao层
package com.lyh.dao;
import com.lyh.domain.Book;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author martin
* @date 2020/11/6
**/
@Repository
public interface BookDao {
@Select("select * from my_book")
List<Book> findAll();
@Insert("insert into my_book(name,author,price) values(#{name},#{author},#{price})")
int addBook(Book book);
@Delete("delete from my_book where name = #{name}")
int deleteBook(String name);
@Update("update my_book set name=#{name},author=#{author},price=#{price} where name = #{name}")
int updateBook(Book book);
}
五、domain层
package com.lyh.domain;
import lombok.Data;
/**
* @author martin
* @date 2020/11/6
**/
@Data
public class Book {
private Integer id;
private String name;
private String author;
private Double price;
}
六、service层
package com.lyh.service.impl;
import com.lyh.dao.BookDao;
import com.lyh.domain.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author martin
* @date 2020/11/6
**/
@Service("bookService")
public class BookServiceImpl implements BookDao {
private BookDao bookDao;
@Autowired
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
@Override
public List<Book> findAll() {
return bookDao.findAll();
}
@Override
public int addBook(Book book) {
return bookDao.addBook(book);
}
@Override
public int deleteBook(String name) {
return bookDao.deleteBook(name);
}
@Override
public int updateBook(Book book) {
return bookDao.updateBook(book);
}
}
七、结果展示