图书模块:
界面:
包:
关键性代码:
值对象:
package cn.hncu.booksManagementSystem.book.vo; import java.io.Serializable; /** * * CreateTime: 2018年4月19日 下午3:24:35 * @author 宋进宇 Email:[email protected] * Description: * 图书模块值对象 */ public class BookModel implements Serializable{ private static final long serialVersionUID = 1L; private String id; //图书标识 private String name; //图书名称 private double inPrice; //图书进价 private double outPrice; //图书售价 public BookModel() { } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getInPrice() { return inPrice; } public void setInPrice(double inPrice) { this.inPrice = inPrice; } public double getOutPrice() { return outPrice; } public void setOutPrice(double outPrice) { this.outPrice = outPrice; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BookModel other = (BookModel) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } @Override public String toString() { return id + ", 《" + name + "》, 进价:" + inPrice + ", 售价:" + outPrice ; } }
DAO接口:
package cn.hncu.booksManagementSystem.book.dao.dao; import java.util.Collection; import cn.hncu.booksManagementSystem.book.vo.BookModel; import cn.hncu.booksManagementSystem.book.vo.BookQueryModel; /** * CreateTime: 2018年4月19日 下午3:40:50 * @author 宋进宇 Email:[email protected] * Description: * 图书DAO */ public interface BookDAO { /** * 添加一个 BookModel 对象 * @param book 被添加的对象 * @return true:添加成功,false:添加失败 */ public boolean add(BookModel book); /** * 删除一个 BookModel 对象 * @param book 被删除的对象 * @return true:删除成功,false:删除失败 */ public boolean delete(BookModel book); /** * 修改一个 BookModel 对象 * @param book 被修改的对象 * @return true:修改成功,false:修改失败 */ public boolean update(BookModel book); /** * 通过图书id查询 * @param id 被查询对象的编号id * @return 返回BookModel的实例对象表示查找到,返回null表示没有查找到相应id的用户 */ public BookModel getUserModelById(String id); /** * 查询所有图书 * @return 所有图书的集合 */ public Collection<BookModel> getAll(); /** * 根据查询值对象查询图书 * @param bqm 查询值对象 * @return 符合条件的图书集合 */ public Collection<BookModel> getUsersByCondition(BookQueryModel bqm); }
DAO接口实现类:
package cn.hncu.booksManagementSystem.book.dao.impl; import java.util.ArrayList; import java.util.Collection; import cn.hncu.booksManagementSystem.book.dao.dao.BookDAO; import cn.hncu.booksManagementSystem.book.vo.BookModel; import cn.hncu.booksManagementSystem.book.vo.BookQueryModel; import cn.hncu.booksManagementSystem.common.enums.XxxIdEnum; import cn.hncu.booksManagementSystem.utils.FileIoUtil; import cn.hncu.booksManagementSystem.utils.GeneratorXxxID_Util; /** * * CreateTime: 2018年4月19日 下午3:46:21 * @author 宋进宇 Email:[email protected] * Description: * BookDAO接口实现类 */ public class BookDAO_FileImpl implements BookDAO { //数据源 private final String FILE_NAME = "./data/book.info"; @Override public boolean add(BookModel book) { //如果被添加的图书值对象为null,则返回false if (book==null) { return false; } //先获取所有图书对象 Collection<BookModel> col = FileIoUtil.readFromFile(FILE_NAME); //遍历整个集合 for (BookModel b : col) { //如果找到相同的对象则表示已存在,返回false if (b.equals(book)) { return false; } } //能到这里,说明book是新的图书则可以添加 boolean boo=col.add(book); //产生下一个图书id GeneratorXxxID_Util.updateXxxId(XxxIdEnum.BOOK);; return boo&&FileIoUtil.write2File(col, FILE_NAME); } @Override public boolean delete(BookModel book) { //如果book为null,则不能删除返回false if (book==null) { return false; } Collection<BookModel> col = FileIoUtil.readFromFile(FILE_NAME); //遍历整个集合 for (BookModel b : col) { //找到相同的对象,并删除 if (b.equals(book)) { boolean boo=col.remove(book); return boo&&FileIoUtil.write2File(col, FILE_NAME); } } //能到这里说明不存在 book 值对象 return false; } @Override public boolean update(BookModel book) { //如果book为null,则返回false if (book==null) { return false; } //从数据库中把数据读取出来 Collection<BookModel> col = FileIoUtil.readFromFile(FILE_NAME); //进行强转,以便替换(利用ArrayList中get/set方法) ArrayList<BookModel> list = (ArrayList<BookModel>) col; boolean boo = false; for(int i =0;i<list.size();i++) { //如果找到相同id的图书,就修改 if (list.get(i).equals(book)) { list.set(i, book); boo = true; break; } } col = list; return boo&&FileIoUtil.write2File(list, FILE_NAME); } @Override public BookModel getUserModelById(String id) { //如果id为null,则不存在返回null if (id==null) { return null; } Collection<BookModel> col = FileIoUtil.readFromFile(FILE_NAME); for (BookModel book : col) { if (book.getId().equals(id)) { //找到就返回图书值对象 return book; } } return null; } @Override public Collection<BookModel> getAll() { //直接读取全部数据返回 return FileIoUtil.readFromFile(FILE_NAME); } @Override public Collection<BookModel> getUsersByCondition(BookQueryModel bqm) { //获得所有数据 Collection<BookModel> col = getAll(); //如果查询值对象为空则查询所有 if (bqm==null) { return col; } //创建一个结果集 Collection<BookModel> res = new ArrayList<BookModel>(); //遍历所有整个col集合,找到符合条件的元素加入结果集 //才用卫条件,反逻辑 for (BookModel book : col) { //卫条件1 查id 精确查询 //判断查询条件是否有效 if (bqm.getId()!=null&&bqm.getId().trim().length()>0) { //能到这里说明查询条件有效 //反逻辑:不符合条件的跳过 if (!book.getId().trim().equals(bqm.getId().trim())) { continue; } } //卫条件2 查名称 模糊查询 //判断查询条件是否有效 if (bqm.getName()!=null&&bqm.getName().trim().length()>0) { //能到这里说明查询条件有效 //反逻辑:不符合条件的跳过 if (!book.getName().contains(bqm.getName().trim())) { continue; } } //卫条件3 查进价 范围查询 反逻辑 :小于小的大于大的 //判断查询条件是否有效 if (bqm.getInPrice()>0) { //小于小的就跳过 if (book.getInPrice()<bqm.getInPrice()) { continue; } } //判断查询条件是否有效 if (bqm.getInPrice2()>0) { //大于大的就跳过 if (book.getInPrice()>bqm.getInPrice2()) { continue; } } //卫条件4 查售价 范围查询 反逻辑 :小于小的大于大的 //判断查询条件是否有效 if (bqm.getOutPrice()>0) { //小于小的就跳过 if (book.getOutPrice()<bqm.getOutPrice()) { continue; } } //判断查询条件是否有效 if (bqm.getOutPrice2()>0) { //大于大的就跳过 if (book.getOutPrice()>bqm.getOutPrice2()) { continue; } } //能到这里说明是符合条件的 res.add(book); } return res; } }
生产DAO接口的工厂
package cn.hncu.booksManagementSystem.book.dao.factory; import cn.hncu.booksManagementSystem.book.dao.dao.BookDAO; import cn.hncu.booksManagementSystem.book.dao.impl.BookDAO_FileImpl; /** * CreateTime: 2018年4月19日 下午4:28:06 * @author 宋进宇 Email:[email protected] * Description: * 生产BookDAO接口的工厂 */ public class BookDAO_Factory { //私有化构造函数 private BookDAO_Factory() { } /** * 获取BookDAO接口实现类的实例 * @return BookDAO接口的实现类的实例 */ public static BookDAO getInstanceOfBookDAO() { return new BookDAO_FileImpl(); } }
逻辑层的ebi接口:
package cn.hncu.booksManagementSystem.book.business.ebi; import java.util.Collection; import cn.hncu.booksManagementSystem.book.vo.BookModel; import cn.hncu.booksManagementSystem.book.vo.BookQueryModel; /** * CreateTime: 2018年4月19日 下午4:25:07 * @author 宋进宇 Email:[email protected] * Description: * 图书模块逻辑层接口 */ public interface BookEbi { /** * 添加一个 BookModel 对象 * @param book 被添加的对象 * @return true:添加成功,false:添加失败 */ public boolean add(BookModel book); /** * 删除一个 BookModel 对象 * @param book 被删除的对象 * @return true:删除成功,false:删除失败 */ public boolean delete(BookModel book); /** * 修改一个 BookModel 对象 * @param book 被修改的对象 * @return true:修改成功,false:修改失败 */ public boolean update(BookModel book); /** * 通过图书id查询 * @param id 被查询对象的编号id * @return 返回BookModel的实例对象表示查找到,返回null表示没有查找到相应id的用户 */ public BookModel getBookModelById(String id); /** * 查询所有图书 * @return 所有图书的集合 */ public Collection<BookModel> getAll(); /** * 根据查询值对象查询图书 * @param bqm 查询值对象 * @return 符合条件的图书集合 */ public Collection<BookModel> getBooksByCondition(BookQueryModel bqm); }
扫描二维码关注公众号,回复:
122002 查看本文章