数据表名称: tb_item_param
表结构如下:
表数据如下:
现想实现,在Java Web应用中,对此表进行分页查询---先采用JUnit单元测试,再实现对应的controller
JUnit单元测试
@Test
public void testTbItemParam() throws Exception{
//1、 拿到spring上下文对象
ApplicationContext aContext = null ;
try{
aContext= new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
}
catch(Exception ex){
ex.printStackTrace();
}
//2、用这个上下文对象 拿到商品规格参数模板的 mapper映射类 --> 代理对象 bean
TbItemParamMapper itemMapper = aContext.getBean(TbItemParamMapper.class);
//3、设置分页显示
PageHelper.startPage(1, 5);// 一页显示5,当前是第一页
//4、查询商品规格参数模板 此时,list已经是分页状态了,example无条件查询,相当于 select*from taotao.tb_item_param limit 0,5
TbItemParamExample example =new TbItemParamExample();
List<TbItemParam> list = itemMapper.selectByExample(example); //这个是查询普通文本类型的,这里演示一下效果
//5、判断一下list里面是否查询到了数据集
if(list !=null & list.size()>0)
{
int i = 0;
for(TbItemParam item : list){
System.out.println(item.getId()+","+item.getItemCatId()+","+item.getParamData()+","+(i+1));
i++;
}
}
//下面,我们用PageInfo泛型集合包装一下商品list
//同时,我们可以用pageInfo对象进行一些分页属性的返回
PageInfo<TbItemParam> pageInfo = new PageInfo<>(list);
long totalCount = pageInfo.getTotal();
System.out.println("总记录数:"+totalCount);
int pages = pageInfo.getPages();
System.out.println("总页数:"+pages);
int pageSize = pageInfo.getPageSize();
System.out.println("每页展示数:"+pageSize);
int lastPage = pageInfo.getFirstPage();
System.out.println("首页:"+lastPage);
int nextPage = pageInfo.getNextPage();
System.out.println("下一页:"+nextPage);
}
执行后我们发现,表的字段param_data打印为null
原因就是,xxxxmapper的selectByExample()方法针对的是普通文本类型的字段,如果想要查询含有大文本类型的字段,需要用到xxxxmapepr的另一个方法----->selectByExampleWithBLOBs()
上述demo,只需改一个地方,就行:
//List<TbItemParam> list = itemMapper.selectByExample(example); //查询普通字符串
//查询 数据库 类型 是text 大文本类型的数据
List<TbItemParam> list = itemMapper.selectByExampleWithBLOBs(example);
改过后,执行下测试的结果如下:
servive和controller的demo部分就不放出来了,最终效果就是页面上实现了商品规格参数模板的分页查询的展示:
1、controller返回的json数据字符串:
2、jsp页面easyui-datagrid js插件的数据表格展示:
3、js实现ParamData的json数据拆分:
4、最终页面效果展示(默认一页显示30条记录):