分页 模糊查询「建议收藏」

分页 模糊查询「建议收藏」一、所有的web项目都会用到分页显示和模糊查询,对于有些人不知道该怎么写二、今天我用springMVC和myBatis写的分页和模糊分享给大家,不喜勿喷三、数据库是mysql四、其实写分页就是新建一个分页的类,定义页码每页数量共几页当前页数总数量五、判断多少页,获取总数量除以每页显示的数量,有余数+1页六、sql语句就是用…

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

一、所有的web项目都会用到分页显示和模糊查询,对于有些人不知道该怎么写

 

二、今天我用springMVC 和 myBatis 写的分页和模糊分享给大家,不喜勿喷

 

三、数据库是mysql

 

四、其实写分页就是新建一个分页的类,定义 页码  每页数量  共几页  当前页数  总数量

 

五、判断多少页,获取总数量除以每页显示的数量,有余数+1页

 

六、sql语句就是用 limit  显示的数量,把从多少条开始,到显示几条传到sql语句上

 

七、目前每页的显示的数量是定义好的,等过两天有时间把自己可以选择显示页数的代码写出来

 

八、源码下载地址  点击打开链接

 

用户实体类

public class User {
	
	private int id;
	private String name;
	private String sex;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

分页的实体类

public class Page {
	/**
	 * 页码
	 */
	private int pageNum;
	/**
	 * 每页显示的行数
	 */
	private int pageRows;
	/**
	 * 总行数
	 */
	private int totalRows;
	/**
	 * 总页数
	 */
	private int totalPages;
	/**
	 * 起始行号
	 */
	private int beginRownum;
	/**
	 * 结束行号
	 */
	private int endRownum;

	public Page(int pageNum, int pageRows, int totalRows) {
		this.pageNum = pageNum;
		this.pageRows = pageRows;
		this.totalRows = totalRows;
		// 计算总页数:总行数%每页行数==0?总行数/每页行数:总行数/每页行数+1
		this.totalPages = totalRows % pageRows == 0 ? totalRows / pageRows : (totalRows / pageRows) + 1;
		beginRownum = (pageNum - 1) * pageRows;
		endRownum = pageNum * pageRows;
	}

	public int getPageNum() {
		return pageNum;
	}

	public void setPageNum(int pageNum) {
		this.pageNum = pageNum;
	}

	public int getPageRows() {
		return pageRows;
	}

	public void setPageRows(int pageRows) {
		this.pageRows = pageRows;
	}

	public int getTotalRows() {
		return totalRows;
	}

	public void setTotalRows(int totalRows) {
		this.totalRows = totalRows;
	}

	public int getTotalPages() {
		return totalPages;
	}

	public void setTotalPages(int totalPages) {
		this.totalPages = totalPages;
	}

	public int getBeginRownum() {
		return beginRownum;
	}

	public void setBeginRownum(int beginRownum) {
		this.beginRownum = beginRownum;
	}

	public int getEndRownum() {
		return endRownum;
	}

	public void setEndRownum(int endRownum) {
		this.endRownum = endRownum;
	}
	
}

 

 

 

mapper  和  映射文件

public interface UserMapper {
	
	public List<User> selectAll(Map<String,Object> map);
	
	//查询总行数
	public int selTotalRows(Map<String,Object> map);
}

<mapper namespace="com.mapper.UserMapper">

	<select id="selectAll" resultType="com.entity.User">
		select * from user 
		<where>
			<if test="name != null and name != ''">
				and name like #{name}
			</if>
			<if test="sex != null and sex != ''">
				and sex = #{sex}
			</if>
		</where>
		limit #{page.beginRownum},5
	</select>
	
	<!-- 查询总行数 -->
	<select id="selTotalRows" resultType="int">
		select count(id) from user
		<where>
			<if test="name != null and name != ''">
				and name like #{name}
			</if>
			<if test="sex != null and sex != ''">
				and sex = #{sex}
			</if>
		</where>
	</select>

</mapper>

 

控制层

public class UserController {

		@Autowired
		private UserService userService;

		@RequestMapping("/showAll.action")
		public String selAll(HttpServletRequest request){
			Map<String,Object> map = new HashMap<String, Object>();	
			map.put("name", null);
			map.put("sex", null);
			Page page = new Page(1,5,userService.selTotalRows(map));
			map.put("page", page);
			List<User> userList = userService.selectAll(map);
			request.setAttribute("userList", userList);
			request.setAttribute("page", page);
			return "two.jsp";
		}
		
		
		//查询所有用户(带模糊查询、分页)
		@RequestMapping("/showPage.action")
		public String selAllLikePage(int pageNum,String name,String sex,HttpServletRequest request){
			Map<String,Object> map = new HashMap<String, Object>();
			if("".equals(name)){
				map.put("name", null);
			}else{
				map.put("name", "%"+name+"%");
			}
			if("".equals(sex)){
				map.put("sex", null);
			}else{
				map.put("sex", sex);
			}
			Page page = new Page(pageNum,5,userService.selTotalRows(map));
			map.put("page", page);
			List<User> userList = userService.selectAll(map);
			request.setAttribute("userList",userList);
			request.setAttribute("page", page);
			request.setAttribute("name", name);
			request.setAttribute("sex", sex);
			return "two.jsp";
		}
}

 

jsp页面

<body>
	<div>
		<form action="showPage.action?pageNum=1" method="post">
			<span>
				姓名:<input name="name" value="${name }" />   
				性别:<input name="sex" value="${sex }" />  
				<input type="submit" value="查询" /> 
			</span>
		</form>
	</div>
	<br><br>
	<div>
		<table width="500" border="1" cellspacing="0" cellpadding="0">
			<tr>
				<th width="100px">序号</th>
				<th width="200px">姓名</th>
				<th width="200px">性别</th>
			</tr>
			<c:forEach items="${userList }" var="user">
				<tr>
					<td>${user.id }</td>
					<td>${user.name }</td>
					<td>${user.sex }</td>
				</tr>
			</c:forEach>
			<tr>
				<td class="scott" colspan="20" style="text-align: center;">
					 <c:if test="${page.pageNum > 1 }">
                       	<a href="showPage.action?name=${name }&sex=${sex }&pageNum=1">首页</a>
						<a href="showPage.action?name=${name }&sex=${sex }&pageNum=${page.pageNum - 1 }">上一页</a>
					</c:if>
					<c:forEach begin="1" end="${page.totalPages}" step="1" var="num">
						<c:if test="${page.pageNum == num }">${num }</c:if>
						<c:if test="${page.pageNum != num }">
							<a href="showPage.action?name=${name }&sex${sex }&pageNum=${num }">${num }</a>
						</c:if>
					</c:forEach>
					<c:if test="${page.pageNum < page.totalPages }">
						<a href="showPage.action?name=${name }&sex=${sex }&pageNum=${page.pageNum + 1 }">下一页</a>
						<a href="showPage.action?name=${name }&sex=${sex }&pageNum=${page.totalPages }">尾页</a>
					</c:if>
					总${page.pageNum}/${page.totalPages }页
				</td>
			</tr>
		</table>
		
	</div>
</body>

 

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143750.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java video_video java, video java Suppliers and Manufacturers at Alibaba.com

    java video_video java, video java Suppliers and Manufacturers at Alibaba.com1/6$100.00-$350.00/Unit1.0Units(Min.Order)CardlanAFCMchinasupportJavaCardsforprogram,freeSDKforProgrammingOver17Years’ManufacturingExperienceShenzhenCardlanTechnologyCo.Wespec…

  • mybatiscodehelperpro 2.9.6 怎么激活(注册激活)「建议收藏」

    (mybatiscodehelperpro 2.9.6 怎么激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html0VOERWDQ5R-eyJsa…

  • 浅谈VB.NET[通俗易懂]

    浅谈VB.NET[通俗易懂]浅谈VB.NET

  • XGBoost算法梳理[通俗易懂]

    XGBoost算法梳理[通俗易懂]XGBoost是boosting算法的其中一种。Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。讲解其原理前,先讲解一下CART回归树。一、CART回归树CART回归树是假设树为二叉树,通过不断将特征进行分裂。比如当前树结点是基于第j个特征值进…

  • 深度卷积网络_卷积神经网络输出大小

    深度卷积网络_卷积神经网络输出大小在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如最近的GoogLenet,VGG-19,Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确度。ResNet模型的核心是通过建立前面层与后面层之间的“短路连接”(shortcuts,skipconnection),这有助于训练过程中梯度的反向传播,从而能训练出更深的CNN网络。今天我们要介绍的是DenseNet(Denselyconnectedcon

  • springcloud原理详解_SpringMVC运行原理

    springcloud原理详解_SpringMVC运行原理SpringCloudEureka原理分析一、Eureka的基础架构及服务治理机制  Eureka服务治理的基础架构包含三个核心:服务注册中心、服务提供者、服务消费者。其中服务注册中心,即Eureka提供的服务端,提供服务注册和发现的功能;服务提供者,即将自己的服务注册到注册中心;服务的消费者,从注册中心获取服务列表,从而使消费者知道到何处调用服务,服务消费可以使用Ribbon、Feign等。1、服务提供者:服务注册:服务提供者在项目启动时,会通过发送REST请求的方式将自己注册到eure

    2022年10月21日

发表回复

您的电子邮箱地址不会被公开。

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