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

分页 模糊查询「建议收藏」一、所有的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>

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++路标设置「建议收藏」

    C++路标设置「建议收藏」B市和T市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最大距离定义为该公路的“空旷指数”。现在政府决定在公路上增设一些路标,使得公路的“空旷指数”最小。他们请求你设计一个程序计算能达到的最小值是多少。请注意,公路的起点和终点保证已设有路标,公路的长度为整数,并且原有路标和新设路标都必须距起点整数个单位距离。输入格式:第1行包括三个数l(0<l≤1000,000,00

    2022年8月12日
    8
  • java tomcat 环境变量配置_手把手教你如何配置tomcat环境变量「建议收藏」

    java tomcat 环境变量配置_手把手教你如何配置tomcat环境变量「建议收藏」我们下载安装了tomcat,那么tomcat环境变量配置怎么配置?下面小编就和大家分享下tomcat环境变量的配置。首先介绍安装JDK和Tomcat一、安装JDK和Tomcat1、安装JDK:直接运行jdk-7-windows-i586.exe可执行程序,默认安装即可。备注:路径可以其他盘符,不建议路径包含中文名及特殊符号。2、安装Tomcat:直接解压缩下载文件“apache-tomcat-7….

    2022年5月31日
    33
  • qt 获取窗口句柄「建议收藏」

    qt 获取窗口句柄「建议收藏」HWNDappwnd;appwnd=(HWND)w.winId();QStringClassName(“Qt5QWindowIcon”);QStringAppName=QStringLiteral(“GG”);LPCWSTRapp=reinterpret_cast(ClassName.data());LPCWSTRappCaption=reinterpret_

    2022年7月21日
    154
  • Map有序输出_在线反序输出

    Map有序输出_在线反序输出ListOrderedMap位于commons-collections的jar包里,与普通的map相比,ListOrderedMap的key可保持原有顺序。packageutil;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;importorg.apache.commons.collections.map.ListOrderedMap;publicclassListOrderMapTest{pub

    2022年9月15日
    4
  • java中break和continue的用法「建议收藏」

    java中break和continue的用法「建议收藏」**break和continue的用法**break的用法:1.break用于switch语句中,终止switch语句2.break用于循环时,跳出循环3.break用于其他位置,毫无意义1.break用于switch语句中,终止switch语句inta=4;switch(a){case1:…

    2022年4月30日
    55
  • ubuntu20.04 虚拟机连不上网

    ubuntu20.04 虚拟机连不上网记录一下虚拟机——编辑——虚拟网络编辑器

    2022年6月26日
    25

发表回复

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

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