您当前的位置: 首页 > 

梁云亮

暂无认证

  • 3浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

基于文件的图书管理系统三:Dao层+Service层

梁云亮 发布时间:2022-03-29 14:02:19 ,浏览量:3

Dao接口
public interface BookDao {
    List selectAllBook();

    List selectBookByCondition(String type, String query);

    boolean appendBook(Book book);

    boolean updateBook(Book book);
}
Dao接口实现类
public class BookDaoImpl implements BookDao {
    @Override
    public List selectAllBook() {
        List res = new ArrayList();
        try (BufferedReader br = new BufferedReader(new FileReader(BMS.DB_BOOKS));) {
            String line = null;
            while ((line = br.readLine()) != null) {
                Book book = BMSUtil.str2Book(line);
                res.add(book);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return res;
    }

    @Override
    public List selectBookByCondition(String type, String query) {
        if (StringUtil.isBlank(type) || StringUtil.isBlank(query)) {
            throw new GlobalException("待查找的类型or查询内容不能为空");
        }
        List res = new ArrayList();
        String bookInfo = BMSUtil.getBookInfo(type, query);
        String[] split = bookInfo.split("\n");
        for (String line : split) {
            Book book = BMSUtil.str2Book(line);
            res.add(book);
        }
        return res;
    }

    @Override
    public boolean appendBook(Book book) {
        if (book == null) {
            throw new GlobalException("图书信息不能为空");
        }
        //获取文件的长度
        long pos = new File(BMS.DB_BOOKS).length();
        BMSUtil.fileRandInsert(pos, "\n" + book.toString());
        return true;
    }

    @Override
    public boolean updateBook(Book book) {
        if (book == null || book.getIsbn() == null) {
            throw new GlobalException("book不能为空且ISBN不能为空");
        }
        boolean res = BMSUtil.updateBook(book.toString());
        return res;
    }
}
Service接口
public interface BookService {
    /**
     * 查询出所有的书籍
     *
     * @return
     */
    List getAllBooks();

    /**
     * 查询
     *
     * @param type
     * @param query
     * @return
     */
    List getBookByCondition(String type, String query);

    /**
     * 增加书籍
     *
     * @param book
     * @return
     */
    String appendBook(Book book);

    /**
     * 更新图书
     *
     * @param book
     * @return
     */
    String updateBook(Book book);
}
Service接口实现类
@Slf4j
public class BookServiceImpl implements BookService {
    private BookDao bookDao = new BookDaoImpl();

    @Override
    public List getAllBooks() {
        log.info("类{}的{}方法在{}被调用","BookServiceImpl","getAllBooks()", LocalDateTime.now());
        List res = bookDao.selectAllBook();
        return res;
    }

    @Override
    public List getBookByCondition(String type, String query) {
        log.info("类{}的{}方法在{}被调用","BookServiceImpl","getBookByCondition()", LocalDateTime.now());
        if (StringUtil.isBlank(type) || StringUtil.isBlank(query)) {
            log.warn("类型or查询内容不能为空");
            throw new GlobalException("待查找的类型or查询内容不能为空");
        }
        List res = bookDao.selectBookByCondition(type, query);
        return res;
    }

    @Override
    public String appendBook(Book book) {
        log.info("类{}的{}方法在{}被调用","BookServiceImpl","appendBook()", LocalDateTime.now());
        if (book == null) {
            log.warn("图书信息不能为空");
            throw new GlobalException("图书信息不能为空");
        }
        boolean res = bookDao.appendBook(book);
        return res ? "添加成功" : "添加失败";
    }

    @Override
    public String updateBook(Book book) {
        log.info("类{}的{}方法在{}被调用","BookServiceImpl","updateBook()", LocalDateTime.now());
        if (book == null || book.getIsbn() == null) {
            log.warn("book不能为空且ISBN不能为空");
            throw new GlobalException("book不能为空且ISBN不能为空");
        }
        boolean res = bookDao.updateBook(book);
        return res ? "修改成功" : "修改失败";
    }
}
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0434s