Mysql+Mybatis分页查询

Mysql+Mybatis分页查询一,首先做一个查询所有并显示daopublicinterfaceProductDAO{ publicList<Product>list();}mapper<mappernamespace="hust.mm.dao.ProductDAO"> <selectid="list"resultType="Product"> s..

大家好,又见面了,我是你们的朋友全栈君。

一,首先做一个查询所有并显示

dao

public interface ProductDAO {
	public List<Product> list();
}

mapper

<mapper namespace="hust.mm.dao.ProductDAO">
	<select id="list" resultType="Product">
		select * from product
	</select>
</mapper>

controller

@RequestMapping("/list.do")
public ModelAndView productlist(){
	ModelAndView mav = new ModelAndView();
		
	List<Product> products = productDao.list();
		
	mav.addObject("products", products);
	mav.setViewName("productList");
		
	return mav;
}

jsp

<table align="center">
		<th>
			<td>id</td>
			<td>name</td>
			<td>price</td>
		</th>
		<c:forEach items="${products }" var="p" varStatus="st">
			<tr>
				<td>${p.id }</td>
				<td>${p.name }</td>
				<td>${p.price }</td>
			</tr>
		</c:forEach>
</table>

以上简要给出了一个表中的所有数据

二,分页显示

修改dao

public interface ProductDAO {
	public List<Product> list();
	public List<Product> list(@Param("start") int start, @Param("count") int count);
}

修改mapper

<mapper namespace="hust.mm.dao.ProductDAO">
    <select id="list" resultType="Product">
		select * from product
		<if test="start!=null and count!=null">
			limit #{start},#{count}
		</if>
	</select>
</mapper>

修改controller

@RequestMapping("/list.do")
public ModelAndView productlist(int start){
	ModelAndView mav = new ModelAndView();
		
	List<Product> products = productDao.list(start,3);
		
	mav.addObject("products", products);
	mav.addObject("start", start);
	mav.setViewName("productList");
		
	return mav;
}

修改jsp

<table align="center">
		<th>
			<td>id</td>
			<td>name</td>
			<td>price</td>
		</th>
		<c:forEach items="${products }" var="p" varStatus="st">
			<tr>
				<td>${p.id }</td>
				<td>${p.name }</td>
				<td>${p.price }</td>
			</tr>
		</c:forEach>
        
        <tr>
			<td><a href="list.do?start=${start-3 }">上一页</a></td>
			<td><a href="list.do?start=${start+3 }">下一页</a></td>
		</tr>
</table>

这里以每页三条数据分页显示

三,完善分页

可以想到,当在首页点击上一页和在尾页点击下一页,应该没有反应或者做出相应处理。有两种解决方案,

  1. 使用jstl或el语句判断start参数是否小于0或大于total-分页大小
  2. 在controller对start进行判断

四,分页的其他方案

上述的分页是利用了mybatis的动态SQL以及MySQL数据库特有的limit语句。有一定的特殊性,可以使用PageHelper这一类分页插件来进行分页开发。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137181.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月2日 下午1:36
下一篇 2022年6月2日 下午1:36


相关推荐

  • 常数变易法的原理

    常数变易法的原理高数看到常数变易法 不懂为什么要把 C 变成 u 看了篇文章 感觉懂了转载自 http www cnblogs com lookof archive 2009 01 06 1370065 html 注 本方法是对崔士襄教授写的 常数变易法 来历的探讨 论文的解释 思路并非本人原创 特此注明 背景详见本人前一篇博文 nbsp nbsp nbsp nbsp nbsp nbsp 我们来看下面的式子

    2026年3月19日
    2
  • js算法初窥03(搜索及去重算法)

    前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法——顺序搜索。1、顺序搜索其实顺序搜索十分简单,我们还是以第一篇

    2022年3月25日
    43
  • K8s基本概念入门_k8s菜鸟教程

    K8s基本概念入门_k8s菜鸟教程序言    没等到风来,绵绵小雨,所以写个随笔,聊聊k8s的基本概念。    k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。那么,问题来了,要运维何用?    k8s可以更快的更新新版

    2025年8月23日
    5
  • Springboot单元测试_怎么启动汽车步骤

    Springboot单元测试_怎么启动汽车步骤图文带你debug源码分析SpringApplication准备阶段1、配置文件的加载时机?2、日志系统初始化时机?3、SpringBootprepareContext()源码解析4、SpringBootprepareEnvironment()源码解析

    2025年10月12日
    4
  • IUnKNown接口——QueryInterface函数

    IUnKNown接口——QueryInterface函数COM笔记-QueryInterface函数fangyukuan2010.6.1客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。它在UNKNWN.H头文件定义:如下       Interface IUnknown       {            virtual HRESULT _

    2022年6月29日
    34
  • 七. 200多万元得到的创业教训–周鸿祎传授的“活法”

    七. 200多万元得到的创业教训–周鸿祎传授的“活法”

    2022年1月31日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号