分析思路:

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

首先首先我们先找到商品查询商品的按钮在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. linux 内存清理/释放命令

    1.清理前内存使用情况 free -m 2.开始清理  echo 1 > /proc/sys/vm/drop_caches 3.清理后内存使用情况 free -m 4.完成! 查看内存条数命令: ...

  2. MATLAB函数freqz()

    MATLAB提供了专门用于求离散系统频响特性的函数freqz(),调用freqz()的格式有以下两种:l [H,w]=freqz(B,A,N) B和A分别为离散系统的系统函数分子.分母多项式的系数向量 ...

  3. C# Task 用法

    C# Task 的用法 其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观.代码更简洁了,使用Task来进行操作.可以跟线程一样可以轻松的对执行的方法进行控制. 顺便提一下, ...

  4. 使用Git时一些问题的处理

    更新日志: 2016.06.04 晚 添加 git push --force (用于删除高版本的commit) 2015.11.29 晚 添加冲突处理工具Meld的教程 添加在GitHub上Rever ...

  5. 理解 charging ic spec

    如何選擇1個適合您的 charging ic 呢? 主要考量以下 parameters charging ic 的 IIN, VIN charging ic 給 battery 的 IIN, VIN ...

  6. poj3254 状态压缩dp

    题意:给出一个n行m列的草地,1表示肥沃,0表示贫瘠,现在要把一些牛放在肥沃的草地上,但是要求所有牛不能相邻,问你有多少种放法.     分析:假如我们知道第 i-1 行的所有的可以放的情况,那么对于 ...

  7. css 选择器样式优先级

    !important > 行内 >id > class >tag >*

  8. java-a实现压缩与解压缩(zip、gzip)

    zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还 ...

  9. python求职之路

    自我介绍 这是一道送分题,万年不变的第一个问题.不过有些小伙伴可能没有太在意,其实这个问题已经在面试官心中决定了你的去留意向.自我介绍的主要结构:个人基本信息 + 基本技术构成 + 项目经验(具体项目 ...

  10. Java非静态内部类中为什么不能有静态变量却可以有常量?

    如:public class InnerClassDemo{ int x; class A{ static int a = 0;//这样写是不合法的. static final int b=0;//这 ...