任务描述:
前台传车两个值:车辆分类和车辆VIN码,在Oracle查询到数据之后,分页显示出来某些数据项。
1、前台
写几个<div></div> class class,一个点击form,submit, 再写点XXXXXX,完成!
2、后台
控制层:
@Controller
@RequestMapping("/testA")
public class VehicleLogController extends BaseController{
int flag = 0;
@Autowired
private VehicleService vehicleService;
/**
* 查询车辆分类
* @return
*/
@RequestMapping("/testB")
public ModelAndView loadAllVehicleLog(@RequestParam Map<String, String> param) throws Exception {
int A = Integer.parseInt(request.getParameter("")); //获取前台的值
String B = request.getParameter(""); //获取前台的值
int offset = 0;
if (request.getParameter("pager.offset") == null) {// pager.offset,taglib标签自带的属性
offset = 0;
} else {
offset = Integer.parseInt(request.getParameter("pager.offset"));
}
int maxPageItems = 2;// 每页显示条数
PageModel RData = vehicleService.selectAllVehicleLog(offset, maxPageItems, A, B);
// 返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
// 相当 于request的setAttribut,在jsp页面中通过itemsList取数据
modelAndView.addObject("RData", RData );
// modelAndView.setViewName("/WEB-INF/jsp/XXX/XXX.jsp");
// 上边的路径配置可以不在程序中指定jsp路径的前缀和jsp路径的后缀
// 下边的路径,如果在视图解析器中配置jsp路径的前缀和jsp路径的后缀,修改为
modelAndView.setViewName("XXX/XXX");
return modelAndView;
}
}
关于全局变量 int flag = 0; 说明:点击翻页的时候,传进来的某个值因为下拉框选择问题,后面传进来的值可能不是第一次下拉框所选择的值,所以需要将第一次传进来的值保存下来。(举例:下拉框有库存,已售,修理3种选项,分别对应值1,2,3.我选择已售,点击查询,第一次查询后台的值确实是2,但是点击翻页之后,后台的值不一定是2了,所以我们需要把2这个值保存下来,方便后续使用),这个小问题,花了我一万多秒钟!!!真的可恶
service层:
// 查询车辆分类
@Override
public PageModel selectAllVehicleLog(int offset, int maxPageItems, String vehicleLogNew, String vin) {
int pageTotal = total / maxPageItems;// 总页数
if (total % maxPageItems != 0) {
pageTotal = pageTotal + 1;
}
int currentPageNumber = offset / maxPageItems;// 当前页
int startRN = currentPageNumber * maxPageItems + 1;// 分页起始数
int endRN = currentPageNumber * maxPageItems + maxPageItems;// 分页截至数
if (total <= maxPageItems) {
endRN = total;
}
List<Map<String, Object>> list = jdbcTemplate.queryForList
(" SELECT * FROM (SELECT A.*, ROWNUM RN FROM tableA A WHERE ROWNUM <="+endRN+") WHERE RN >= "+startRN);
PageModel pm = new PageModel();
pm.setTotal(total);
pm.setDatas(list); //结果集
pm.setPageTotal(pageTotal);
pm.setMaxPageItems(maxPageItems);
return pm;
}
友情提醒:
查询结果用一下排序,因为分页的时候,查询结果可能顺序不同,使用分页固定一下顺序是有必要的。我自己也在这坑里待了小半天,在公司大佬提醒下才反应过来。(鄙人菜鸟一枚)。
共同学习,共同挣钱!!!