分析思路:

当我们点击查询商品的时候,会出现商品的列表,并按上下页可以实现分页的查询的功能。

首先首先我们先找到商品查询商品的按钮在jsp的那个页面,即首页index.jsp

这里有个url即显示商品页面的l链接:

找到item-list.jsp页面:

这里有个跳转的url即/item/list

通过此处我们可以利用@RequestMapping注解实现页面的跳转

下面我们来分析下编码的实现:

(1)第一步:考虑是否有参数传入,考虑是否有返回值。

是否有参数传入:

查询商品列表,我们是查询所有的商品,所以这里不根据具体的id来查询,是无条件查询。即显示所有商品。

在mybatis中采用了分页查询的原理,而分页查询默认的是由参数的分页,即page和rows,所以这里需要两个参数。即page和rows。

是否有返回值:

这里查询商品,返回值肯定是商品的列表,即返回的pojo对象是商品

而这里页面采用的easyui的datagrid空间显示商品的列表:返回值有固定的形式的json数据格式:

{total:"2",rows:[{"id""1","name""张三"}{"id""2","name""张四"}]}的这种格式。

json的返回数据,我们一般采用封装的形式将数据封装,可以看到这里的格式我们创建一个pojo对象,用来接收返回值的数据:

这个pojo对象有两个属性:一个total,一个rows(rows是存放的list集合)

public class EUDataGridResult {
private int total;
private List<?> rows;
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<?> getRows() {
return rows;
}
public void setRows(List<?> rows) {
this.rows = rows;
}

}

用来装返回值。

下一步的工作就是编码的实现了。

(2)考虑controller、service、dao(mapper)层的业务逻辑实现。

dao层是逆向工程生成的,我们只需要调用即可。

controller层的实现:

这一层主要是用来实现页面的跳转链接,接收参数,调用service,返回结果。

public class ItemController {
@Autowired
private ItemService itemService;

//返回商品查询信息,不要忘记是json格式的数据
@RequestMapping("item/list")
@ResponseBody
public EUDataGridResult getItemList(Integer page,Integer rows){
EUDataGridResult result=itemService.getItemList(page, rows);

return result;
}

service层的实现:

接收controller层传递过来的参数,调用mapper层;

@Override
public EUDataGridResult getItemList(int page, int rows) {
TbItemExample example=new TbItemExample();
//因为没有查询条件,所以不用criteria,直接查询
//开始分页
PageHelper.startPage(page, rows);
List<TbItem> list=itemMapper.selectByExample(example);
//返回一个pojo对象
EUDataGridResult result=new EUDataGridResult();
result.setRows(list);
//取记录的总条数
PageInfo<TbItem> pageInfo=new PageInfo<>(list);
result.setTotal((int) pageInfo.getTotal());
return result;
}

这里用到了分页插件工具,具体见前一篇文章。

这是列表的显示功能分析。

利用mybatis的分页插件实现商品列表的显示的更多相关文章

  1. SpringBoot集成MyBatis的分页插件 PageHelper

    首先说说MyBatis框架的PageHelper插件吧,它是一个非常好用的分页插件,通常我们的项目中如果集成了MyBatis的话,几乎都会用到它,因为分页的业务逻辑说复杂也不复杂,但是有插件我们何乐而 ...

  2. Mybatis的分页插件PageHelper

    Mybatis的分页插件PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper  文档地址:http://git.oschina. ...

  3. Mybatis 的分页插件PageHelper-4.1.1的使用

    Mybatis 的分页插件 PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper  文档地址:http://git.oschin ...

  4. Mybatis之分页插件pagehelper的简单使用

    最近从家里回来之后一直在想着减肥的事情,一个月都没更新博客了,今天下午没睡午觉就想着把mybatis的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...

  5. spring boot(二)整合mybatis plus+ 分页插件 + 代码生成

    先创建spring boot项目,不知道怎么创建项目的 可以看我上一篇文章 用到的环境 JDK8 .maven.lombok.mysql 5.7 swagger 是为了方便接口测试 一.Spring ...

  6. 商品列表中显示类别名称而不是类别ID

    商品表中的字段包裹商品信息和categoryid 若要在商品列表中显示出categoryname,有两种做法: 第一种做法: 拿到categoryid后再跟数据库连接一下,然后拿出categoryna ...

  7. Mybatis的分页插件com.github.pagehelper

    1. 需要引入PageHelper的jar包 如果没有使用maven,那直接把jar包导入到lib文件夹下即可,这个PageHelper插件在github上有开源, 地址为:https://githu ...

  8. mybatis的分页插件使用方法

    1.下载所需要的jar包,如果使用maven可以在maven中添加依赖: 插件的实现原理: 如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的j ...

  9. mybatis pagehelper分页插件使用

    使用过mybatis的人都知道,mybatis本身就很小且简单,sql写在xml里,统一管理和优化.缺点当然也有,比如我们使用过程中,要使用到分页,如果用最原始的方式的话,1.查询分页数据,2.获取分 ...

随机推荐

  1. 20151120 - 蓝牙鼠标与 WiFi 冲突的解决办法

    问题现象描述:Windows 下蓝牙鼠标移动时不连贯 电脑:Dell 2015 版 NEW XPS 15 鼠标:Microsoft Bluetooth Designer Mouse 操作系统:Wind ...

  2. [BZOJ1061][Noi 2008]志愿者招募(网络流)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1061 分析: 神题不解释,只能欣赏:https://www.byvoid.com/bl ...

  3. android之远程启动服务

    启动远程服务和隐式启动Activity一样 实现一个服务 为了演示方便,该服务是一个空服务 package xidian.dy.com.chujia; import android.app.Servi ...

  4. scrollTop和offsetTop的区别,scrollTopLeft和offsetLeft的区别

    scrollTop和offsetTop的区别:scrollTop是指某个可滚动区块向下滚动的距离,比如向下滚动了10个像素,那么这个元素的scrollTop属性值就是10,这个属性的值是可读写的,且不 ...

  5. 别名现象,java对象之间的相互赋值

    请看一下代码 import java.util.*; class book{ static  int c = null; } public static void main(String[] args ...

  6. 1025关于explain的补充1

    https://segmentfault.com/q/1010000004195469 我的困惑 http://www.cnblogs.com/BeginMan/p/3754322.html 可以指定 ...

  7. iOS开发--利用MPMoviePlayerViewController播放视频简单实现

    一.MPMoviePlayerViewController和MPMoviePlayerController区分开,前者继承自NSObject,后者继承自UIViewController 二.MPMov ...

  8. 状态压缩 HDU4539 郑厂长系列故事——排兵布阵

    多组n *m 0不能放1可以放 每个士兵可以攻击到并且只能攻击到与之曼哈顿距离为2的位置以及士兵本身所在的位置. #include<stdio.h> #include<algorit ...

  9. 51nod 1101换零钱(背包)

    N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元.   例如:5分钱换为零钱,有以下4种换法: 1.5个1分 2.1个2分3个1分 3.2个 ...

  10. python第一天

    python 解释器执行代码有两种 一种在解释器: win+R==>cmd 打开终端进行 输入python 加 路径 另一种在文件里写完再到解释器执行:win+R==>cmd 打开终端进行 ...