写在前面:图书管理系统适合的数据库应该是MySQL,但产品需要这个功能,所以使用了MongoDB数据库。项目部署时除了使用IDEA生成war,也使用Ant编译源码生成war,不过Ant工具的确强大。外包依赖库使用了gson、jstl、mongo驱动包。
一、项目开发阶段
1、第一个项目模块是数据库操作模块BookDaoImpl
public class BookDaoImpl {
MongoDatabase mongoDatabase = MongoDBUtil.getConnect();
MongoCollection<Document> collection = mongoDatabase.getCollection("books");
public FindIterable<Document> findAllBooks() {
FindIterable<Document> findIterable = collection.find();
return findIterable;
}
public void addBook(String name, String price, String pnum, String category) {
Document document = new Document();
document.append("name", name);
document.append("price", price);
document.append("pnum", pnum);
document.append("category", category);
collection.insertOne(document);
}
public void deleteBook(String id) {
ObjectId objectId = new ObjectId(id);
BasicDBObject query = new BasicDBObject("_id", objectId);
collection.deleteOne(query);
}
public FindIterable<Document> findBookById(String id) {
ObjectId objectId = new ObjectId(id);
BasicDBObject query = new BasicDBObject("_id", objectId);
FindIterable<Document> findIterable = collection.find(query);
return findIterable;
}
public void updateBook(String id, String name, String price, String pnum, String category) {
ObjectId objectId = new ObjectId(id);
BasicDBObject query = new BasicDBObject("_id", objectId);
Document update = new Document();
update.append("name", name);
update.append("price", price);
update.append("pnum", pnum);
update.append("category", category);
Document document = new Document("$set", update);
collection.updateOne(query, document);
}
public FindIterable<Document> SearchBooks(String name) {
Bson filter = Filters.eq("name", name);
FindIterable<Document> findIterable = collection.find(filter);
return findIterable;
}
public PageResult<Book> findBooksByPage(int page) {
PageResult<Book> pr = new PageResult<>();
long totalCount = collection.count();
System.out.println(totalCount);
pr.setTotalCount(totalCount);
int totalPage = (int) (totalCount % pr.getPageCount() == 0 ? totalCount / pr.getPageCount() : totalCount / pr.getPageCount() + 1);
System.out.println(totalPage);
pr.setTotalPage(totalPage);
pr.setCurrentPage(page);
int start = (page - 1) * pr.getPageCount();
FindIterable<Document> skipBooks = collection.find().limit(pr.getPageCount()).skip(start);
MongoCursor<Document> cursor = skipBooks.iterator();
List<Book> books = new ArrayList<>();
while (cursor.hasNext()) {
Document next = cursor.next();
String s = next.toJson();
Gson gson = new Gson();
Book book = gson.fromJson(s, Book.class);
ObjectId id1 = (ObjectId) next.get("_id");
book.setId(id1);
books.add(book);
}
pr.setList(books);
return pr;
}
}
2、第二个模块类模型Book类和PageResult类
public class Book {
private ObjectId id;
private String name;
private String price;
private String pnum;
private String category