步骤
-
DAO层的编写
-
业务层的编写
-
Servlet的编写
代码
Dao
package com.it.travel.dao;
import com.it.travel.domain.Route;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 线路DAO
*/
public interface RouteDao {
/**
* 查询某个分类下有多少条线路
* @param cid 分类的cid
*/
@Select("SELECT COUNT(*) FROM tab_route WHERE cid=#{cid} AND rname LIKE \"%\"#{rname}\"%\"")
int getCountByCid(@Param("cid") int cid, @Param("rname") String rname);
/**
* 查询某个分类一页的数据
* @param cid 分类cid
* @param begin 起始行号
* @param size 每页大小
*/
@Select("SELECT * FROM tab_route WHERE cid=#{cid} AND rname LIKE \"%\"#{rname}\"%\" LIMIT #{begin},#{size}")
List<Route> getRoutesByPage(@Param("cid") int cid, @Param("begin") int begin, @Param("size") int size, @Param("rname") String rname);
}
Service
/**
* 查询1页的线路数
* @param cid 分类
* @param current 第几页
* @return 封装好的PageBean对象
*/
@Override
public PageBean<Route> getPageBean(int cid, int current, String rname) {
//1. 由用户从浏览器提交过来:current, size
int size = 3; //每页显示三条
//2. 从数据库中查询出来的属性:data, count
//查询记录条数
int count = routeDao.getCountByCid(cid, rname);
//计算出这一页起始的行号
int begin = (current - 1) * size;
//查询一页的数据
List<Route> data = routeDao.getRoutesByPage(cid, begin, size, rname);
return new PageBean<>(current, size, data, count);
}
Servlet
/*
查询某个分类1页的线路
*/
protected void findRouteListByCid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取cid
String cid = request.getParameter("cid");
//获取current
String current = request.getParameter("current");
//从浏览器获取rname的值
String rname = request.getParameter("rname");
//如果没有rname的值,设置为空串
if (rname == null) {
rname = "";
}
//调用业务层
PageBean<Route> pageBean = routeService.getPageBean(Integer.parseInt(cid), Integer.parseInt(current), rname);
//把pageBean对象打印到浏览器
printJsonString(response, pageBean);
}