目录
二:开发PaintingService类:完成分页查询部分的程序业务逻辑类
由此,Model中的,Service部分就开发完成了; 即Model部分就开发完成了。
一:概述
本部分主要是MVC架构的Model(模型)层中的Service部分:然后,本篇博客的具体内容是分页功能的Service部分:
Service是所有业务逻辑最完整的实现;
主要包括:
(1)PaintingService类:完整的程序业务逻辑类,接受Controller的请求,下面调用Dao(隶属于Model部分)类以获取数据;然后PaintingService类本身可以自己加一点其他(非数据查询)的业务代码;综合来看,Service类和Dao共同组成了Model;
二:开发PaintingService类:完成分页查询部分的程序业务逻辑类
具体在业务上就是:
扫描二维码关注公众号,回复:
12756248 查看本文章
![](/qrcode.jpg)
package com.imooc.mgallery.service;
import java.util.List;
import com.imooc.mgallery.dao.PaintingDao;
import com.imooc.mgallery.entity.Painting;
import com.imooc.mgallery.utils.PageModel;
/**
* 这个类主要职责:完成完成的程序业务逻辑;
* 涉及到与底层数据交互的工作,交给Dao类去实现
* @author dell
*
*/
public class PaintingService {
private PaintingDao paintingDao = new PaintingDao();
/**
* 调用PaintingDao类的pagination()方法,获得分页数据;
* 这个类的内容看似和PageModel类的内容雷同,但是这个类还是必须的,在实际的开发中,需要遵从MVC原
* 则的按层逐级调用的规范;;;所以,即便没有其他的业务逻辑,我们也要写一个Service,然后让这个Service去调用Dao;
* @param page 当前第几页
* @param rows 每页有几条数据
* @return
*/
public PageModel pagination(int page,int rows) {
if(rows == 0) { // 可以看到,Service类中不但需要调用Dao来进行数据访问;
// Service类还包括:一些前置条件的检查,以及得到调用结果后的后置数据的处理,这些工作都是与底层数据无关的
// Service类中的方法用于处理完整的业务逻辑,Service类中方法需要尽量写的完整;
// 而Dao中的方法只与底层数据进行交互的;;;
// 所以,在这个例子中,即使Service类中的方法和Dao中的内容基本相同,也必须要要写这个Service类;
throw new RuntimeException("无效的rows参数");
}
return paintingDao.pagination(page, rows);
}
// public static void main(String[] args) { // 这个main方法,仅仅是开发时测试之用
// PaintingService paintingService = new PaintingService();
// PageModel pageModel = paintingService.pagination(2, 6);
// List<Painting> paintingList = pageModel.getPageData();
// for(Painting painting:paintingList) {
// System.out.println(painting.getPname());
// }
// System.out.println(pageModel.getPageStartRow()+":"+pageModel.getPageEndRow());
// }
}
PaintingService类的几点说明:
(1)PaintingService类:完成的程序业务逻辑;这个类向Controller部分提供完整的服务;
(2)Controller的请求过来后,PaintingService类需要接受参数,预处理参数,调用Dao部分获取返回的数据,然后(如果需要的话)可以对Dao返回的数据做一下处理,再发送给Controller;
(3)虽然PaintingService什么都没干,很简单;甚至和Dao部分内容差不多,但是这个类是无法被取代的;因为这个PaintingService类可能需要包含一些其他的(可能与获取数据没有直接关系的)业务处理,例如上面代码中判断了rows的参数是否是0;