商品列表查询
项目源码
jsp
为item-list.jsp
,是一个jsp
片段,所以点击时,始终是一个页面。
点击时,响应的是一个HTML
片段。
下面这个片段是一个easyui-datagrid
表格,样式是在index.jsp
里面引入的。
因为始终都是在index.jsp
这个页面。
点击查询商品,请求为url
为 /item/list
就是item-list.jsp
里面的
因为它是index
的一个片段。
- 请求的参数为:
page=1&rows=30
是datagrid
默认加的
响应的json
数据格式:
EasyUI
中datagrid
控件要求的数据格式为:
一个total
(一共查询了多少条记录),一个rows
(当前页展示的结果集)
{total:”2”,rows:[{“id”:”1”,”name”:”张三”},{“id”:”2”,”name”:”李四”}]}
rows
里面的数据和表格的对应:
由上面的表格知道要返回的数据为:
数据库中商品表里面上述字段都有,故是单表查询,可以用逆向工程。
但是逆向工程的代码不能分页。
用PageHelper
分页插件。
使用分页插件PageHelper
逆向工程生成的代码是不支持分页处理的,如果想进行分页需要自己编写mapper
,这样就失去逆向工程的意义了。为了提高开发效率可以使用mybatis
的分页插件PageHelper
。
Mybatis
分页插件 - PageHelper
说明
如果你也在用Mybatis
,建议尝试该分页插件,这个一定是最方便使用的分页插件。
该插件目前支持Oracle
、Mysql
、MariaDB
、SQLite
、Hsqldb
、PostgreSQL
六种数据库分页。
在SqlMapConfig.xml
中配置拦截器插件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
</configuration>
使用方法
第一步:把PageHelper
依赖的jar
包添加到工程中。
响应的json
数据格式EasyUIDataGridResult
放到e3-common
里面,因为service
和web
都会用到。放cn.ylx.common.pojo
包下
package cn.ylx;
import java.io.Serializable;
import java.util.List;
public class EasyUIDataGridResult implements Serializable {
private Long total;
//需要放商品列表和用户列表
private List<?> rows;
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public List<?> getRows() {
return rows;
}
public void setRows(List<?> rows) {
this.rows = rows;
}
}
Service
层
参数:int page ,int rows
业务逻辑:查询所有商品列表,要进行分页处理。
返回值:EasyUIDataGridResult
package cn.ylx.service;
import cn.ylx.EasyUIDataGridResult;
import cn.ylx.pojo.TbItem;
public interface TbItemService {
TbItem getItemById(Long itemId);
EasyUIDataGridResult getItemList(int page, int rows);
}
package cn.ylx.service.impl;
import cn.ylx.EasyUIDataGridResult;
import cn.ylx.mapper.TbItemMapper;
import cn.ylx.pojo.TbItem;
import cn.ylx.service.TbItemService;
import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Service
public class TbItemServiceImpl implements TbItemService {
@Autowired
private TbItemMapper tbItemMapper;
@Override
public TbItem getItemById(Long itemId) {
return tbItemMapper.selectByPrimaryKey(itemId);
}
@Override
public EasyUIDataGridResult getItemList(int page, int rows) {
//设置分页信息,紧跟着的第一个select方法会被分页
PageHelper.startPage(page, rows);
//执行查询
List<TbItem> list = tbItemMapper.getItemList();
//取分页信息
PageInfo<TbItem> pageInfo = new PageInfo<>(list);
//创建返回结果对象
EasyUIDataGridResult result = new EasyUIDataGridResult();
result.setTotal(pageInfo.getTotal());
result.setRows(list);
return result;
}
}
表现层,TbItemController
添加方法
- 初始化表格请求的
url
:/item/list
Datagrid
默认请求参数: page
:当前的页码,从1开始。rows
:每页显示的记录数。- 响应的数据:
json
数据。EasyUIDataGridResult
@RequestMapping("/list")
@ResponseBody
public EasyUIDataGridResult getItemList(Integer page, Integer rows) {
EasyUIDataGridResult result = tbItemService.getItemList(page, rows);
return result;
}
测试
- 先启动服务层,再启动表现层
- 浏览器输入:http://localhost:8081/ ,点击查询商品
上一页,下一页,修改下一秒显示熟练,刷新等都可以用了。