1.我们首先对其进行分析。点击规格参数查询,是显示出所有的参数信息,因为参数表只有itemCatId没有ItemCatName,所以还需要在itemCat中通过id查询出name。所以在dubbo里面是需要写出两个方面的,一个是在TbItemCatDubboService里面,一个是在TbItemParamDubbo里面。现在我们来写出对应的实现类的代码。
//通过ID查询出,之后通过getName就可以得到对应CatId的name了
public TbItemCat selById(long id) {
return tbItemCatMapper.selectByPrimaryKey(id);
}
public EasyUIDataGrid showPage(int page, int rows) {
//先设置分页条件
PageHelper.startPage(page, rows);
//设置查询语句
List<TbItemParam> list=tbItemParamMapper.selectByExampleWithBLOBs(new TbItemParamExample());
PageInfo<TbItemParam> pi=new PageInfo<>(list);
EasyUIDataGrid dataGrid=new EasyUIDataGrid();
dataGrid.setRows(pi.getList());
dataGrid.setTotal(pi.getTotal());
return dataGrid;
}
2.之后我们就应该写manage里面的代码了。这时候我们是要返回一个EasyUIDataGrid出来,然后给前台读出来,用来显示。但是,我们的TbItemParam里面是不包含TbItemCatName的,但是我们的前台是需要显示这一项的,所以我们考虑在manage里面单独建立一个pojo类来解决这个问题,我们创建一个TbItemParamChild,继承TbItemParamChild,然后再添加ItemCatName属性。调用showPage之后,得到了所有的关于TbItemParam的分页数据,,然后我们遍历这些数据,在每个数据里面加入通过CatId查询出的Name,就可以返回前台需要的完整的数据了。代码如下:
public EasyUIDataGrid showPage(int page, int rows) {
EasyUIDataGrid dataGrid=tbItemParamDubboServiceImpl.showPage(page, rows);
List<TbItemParam> list=(List<TbItemParam>) dataGrid.getRows();
List<TbItemParamChild> childList=new ArrayList<>();
for(TbItemParam param:list) {
TbItemParamChild child=new TbItemParamChild();
child.setId(param.getId());
child.setCreated(param.getCreated());
child.setItemCatId(param.getItemCatId());
child.setParamData(param.getParamData());
child.setUpdated(param.getUpdated());
child.setItemCatName(tbItemCatDubboService.selById(child.getItemCatId()).getName());
childList.add(child);
}
dataGrid.setRows(childList);
return dataGrid;
}
3.之后我们写出对应的控制器的代码就可以了。
/**
* 分页显示所有数据
* @param page
* @param rows
* @return
*/
@RequestMapping("item/param/list")
@ResponseBody
public EasyUIDataGrid showPage(int page,int rows){
return tbItemParamServiceImpl.showPage(page, rows);
}