如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。
Ø 第一步:在taotao_manager_dao项目中的pom.xml中添加依赖:如果有加则不需要再加了。
<dependency> <groupId>com.github.pagehelpergroupId> <artifactId>pagehelperartifactId> dependency>
|
Ø 第二步:在mybatis的全局配置文件中,添加拦截器配置,如下:
<plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> plugin> plugins>
|
第三步:在代码中使用pagehelper 分页查询:
1、设置分页信息:
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
//紧跟着的第一个select方法会被分页
List<Country> list = countryMapper.selectIf(1);
2、取分页信息第一种方法
//分页后,实际返回的结果list类型是Page
Page<Country> listCountry = (Page<Country>)list;
listCountry.getTotal();
3、取分页信息的第二种方法,推荐使用第二种
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
List<Country> list = countryMapper.selectAll();
//用PageInfo对结果进行包装
PageInfo page=new PageInfo(list);
//测试PageInfo全部属性
//PageInfo包含了非常全面的分页属性
assertEquals(1, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(1, page.getStartRow());
assertEquals(10, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
assertEquals(1, page.getFirstPage());
assertEquals(8, page.getLastPage());
assertEquals(true, page.isFirstPage());
assertEquals(false, page.isLastPage());
assertEquals(false, page.isHasPreviousPage());
assertEquals(true, page.isHasNextPage());
@Test public void testPageHelper() { //初始化spring容器 ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-dao.xml"); TbItemMapper itemMapper = context.getBean(TbItemMapper.class); //设置分页的条件 PageHelper.startPage(1, 3); //紧跟着的第一个查询才会被分页 // TbItemExample example = new TbItemExample(); List
|
DAO的开发可以使用逆向工程,不需要再重新开发。
Ø 编写接口
public interface ItemService { /** * * @param page 当前的页码 * @param rows 每页显示的行数 * @return */ public EasyUIDataGridResult getItemList(Integer page,Integer rows); }
|
Ø 编写实现类
@Service public class ItemServiceImpl implements ItemService { @Autowired private TbItemMapper mapper; @Override public EasyUIDataGridResult getItemList(Integer page, Integer rows) { //设置分页的条件 PageHelper.startPage(page,rows); //创建example TbItemExample example =new TbItemExample(); //执行查询 获取查询的结果 List
|
在taotao_manager_service工程中的applicationContext-service.xml中设置如下。
/** * 分页查询商品列表 * @param page * @param rows * @return */ @RequestMapping("/item/list") @ResponseBody public EasyUIDataGridResult getItemList(Integer page, Integer rows) { EasyUIDataGridResult result = itemService.getItemList(page, rows); return result; }
|
在taotao_manager_web工程中的springmvc.xml中引入服务,如下图:
出现异常:异常信息如下:
需要debug:开启debug模式,
debug过程中发现有错误日志如下:
说明:超时,dubbo有默认的超时时间,如果不设置默认为1秒,可以设置,如图:在taotao_manager_service工程中的applicationContext-service.xml中配置如下:
同理:在taotao_manager_web中的springmvc.xml中配置timeout选项。