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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • HTTP.sys漏洞验证及防护[通俗易懂]

    HTTP.sys漏洞验证及防护[通俗易懂] 使用发包工具构造http请求包检测以fiddler工具为例,构造如下图的请求包:1GEThttp://192.168.174.145/HTTP/1.12Host:192.168.174.1453Range:bytes=0-184467440737095516154Connection:keep-alive5Cache-Control:max-age=06A…

    2022年7月18日
  • asp.net(c#)网页跳转七种方法小结 .

    asp.net(c#)网页跳转七种方法小结 .转自:http://blog.csdn.net/wonsoft/article/details/5612000  1.Response.Redirect(“http://www.yayiba.com”,false);  目标页面和原页面可以在2个服务器上,可输入网址或相对路径。后面的bool值为是否停止执行当前页。跳转向新的页面,原窗口被代替。”浏览器中的URL为新路径。

    2022年7月20日
  • 网络抓包工具哪个好_常见抓包工具

    网络抓包工具哪个好_常见抓包工具点击上方“民工哥技术之路”选择“星标”每天10点为你分享不一样的干货一、概述无论是开发还是测试,在工作中经常会遇到需要抓包的时候。本篇博客主要介绍如何在各个平台下,高效的抓包。目前的抓包软件总体可以分为两类,一种是设置代理抓取http包,比如Charles、mitmproxy这些软件。另一种是直接抓取经过网卡的所有协议包,其中最出名就是大名鼎鼎的wireshark以及linux自带的抓包软件tcp…

    2022年4月20日
  • markdown表格语法_在线markdown编辑器

    markdown表格语法_在线markdown编辑器"markdown使用教程""markdown系列教程"推荐阅读"你不知道的Markdown基础知识"markdown制作表格

    2022年8月2日
  • TOR架构_中国有多少大数据中心

    TOR架构_中国有多少大数据中心1、前言最近在看《云数据中心网络技术》,学习了企业数据中心网络建设过程,看到有ToR和EoR两种布线方式,之前没有接触过,今天总结一下。2、布线方式ToR:(TopofRack)接入方式就是

    2022年8月6日
  • puppet的refresh与refreshonly参数作用

    puppet的refresh与refreshonly参数作用

    2021年8月14日

发表回复

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

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