1.1.1 分页处理
1.1.1.1 分页插件pagehelper
如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。
1.1.1.2 使用Pagehelper
Ø 第一步:在taotao_manager_dao项目中的pom.xml中添加依赖:如果有加则不需要再加了。
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> </dependency>
|
Ø 第二步:在mybatis的全局配置文件中,添加拦截器配置,如下:
<plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库--> <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<E>,如果想取出分页信息,需要强制转换为Page<E>,
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());
1.1.1.3 测试PageHelper
@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<TbItem> list = itemMapper.selectByExample(example); List<TbItem> list2 = itemMapper.selectByExample(example); System.out.println("打印出来的总书是list1:》》》" + list.size()); System.out.println("打印出来的总书是list2:》》》" + list2.size()); //封装分页信息 PageInfo<TbItem> info = new PageInfo<TbItem>(list); System.out.println("总记录数:"+info.getTotal()); System.out.println("查询的列表行数:"+info.getList().size()); }
|
1.1.2 服务层系统开发
1.1.2.1 dao的开发
DAO的开发可以使用逆向工程,不需要再重新开发。
1.1.2.2 service的开发
Ø 编写接口
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<TbItem> tbItemList = mapper.selectByExample(example); //封装分页信息 PageInfo<TbItem> info = new PageInfo<TbItem>(tbItemList); //设置分页信息到easyuidataGridResult中 EasyUIDataGridResult result = new EasyUIDataGridResult(); result.setTotal(info.getTotal()); result.setRows(info.getList()); return result; } }
|
1.1.2.3 发布服务
在taotao_manager_service工程中的applicationContext-service.xml中设置如下。
1.1.3 表现层系统开发
1.1.3.1 编写Controller
/** * 分页查询商品列表 * @param page * @param rows * @return */ @RequestMapping("/item/list") @ResponseBody public EasyUIDataGridResult getItemList(Integer page, Integer rows) { EasyUIDataGridResult result = itemService.getItemList(page, rows); return result; }
|
1.1.3.2 引入服务
在taotao_manager_web工程中的springmvc.xml中引入服务,如下图:
1.1.4 测试
出现异常:异常信息如下:
需要debug:开启debug模式,
debug过程中发现有错误日志如下:
说明:超时,dubbo有默认的超时时间,如果不设置默认为1秒,可以设置,如图:在taotao_manager_service工程中的applicationContext-service.xml中配置如下:
同理:在taotao_manager_web中的springmvc.xml中配置timeout选项。