多条件查询与分页:

通过页面的houseName、floorage获取值传到前端视图(HouseSearchVO)实体类中的houseName,floorage建立houseSearchVO对象。

通过controller控制层getHouseSearch方法得到houseName,floorage的值 存在哪个就将此值传到后端(HouseSearch)实体类中建立houseSearch对象。

    list.jsp:                                               HouseSearchVO:

    

      HouseController:

  

此时返回一个houseSearch对象。通过HouseService中的search方法调用HouseDAO中的查询,此时传到HouseDAO.xml调用sql语句

    HouseService:                               HouseDAO:

                                     

  HouseDAO.xml:

分页插件:

页面显示:

升级版:

将页面查询时添加的条件 用HouseSearchVO对象保存,再将此对象保存到@ModelAttribute(“vo”)vo对象中返回给页面。

此时,页面就能拿到vo对象,然后通过vo对象的属性来将条件重新显示

最后将下一页修改成点击事件,将页码和表单一起提交。

HouseController

jsp:

源码:

mybatis-config.xml

 <!--插件 分页-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"></property>
</plugin>
</plugins>
 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.etc.dao.HouseDAO">
<insert id="add">
INSERT INTO `t_house` (
`h_name`,
`h_rect`,
`h_date`,
`h_loc1`,
`h_loc2`,
`h_img`,
`h_userId`
)
VALUES
(
#{hName},
#{hRect},
#{hDate},
#{hLoc1},
#{hLoc2},
#{hImg},
#{userId}
);
</insert> <select id="serach" resultType="house">
SELECT * from `t_house`
<where>
<if test="houseName!=null">
h_name like '%${houseName}%'
</if>
<if test="minRect!=null and maxRect!=null">
and h_rect between #{minRect} and #{maxRect}
</if>
</where> </select> </mapper>

HouseDAO.xml

 package com.etc.controller;

 import com.etc.Vo.HouseSearchVO;
import com.etc.Vo.HouseVO;
import com.etc.common.Constant;
import com.etc.converter.HouseConverter;
import com.etc.entity.House;
import com.etc.entity.HouseSearch;
import com.etc.entity.User;
import com.etc.servise.HouseService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List; @Controller
@RequestMapping("/house")
public class HouseController { public static final String UPLOAD_DIR = "D:\\images\\"; @RequestMapping("/images")
public String images(String imgName, HttpServletResponse response) throws IOException {
//将图片的输入流,复制到response的输出流中,
IOUtils.copy(new FileInputStream(UPLOAD_DIR+imgName),response.getOutputStream());
return null;
} @Autowired
private HouseService houseService; @RequestMapping("/add")
public String add(HouseVO houseVO, HttpSession session) throws IOException {
//获取session中的user对象
User user = (User) session.getAttribute("user");
//拿到user对象的id
int userId = user.getUserId();
//设置文件上传的路径
houseVO.getHImg().transferTo(new File(UPLOAD_DIR + houseVO.getHImg().getOriginalFilename()));
//建立house对象
House house = HouseConverter.convert(houseVO, houseVO.getHImg().getOriginalFilename(), userId);
//调用添加方法
houseService.add(house);
return "list";
} @RequestMapping("/serach")
public String serach(@ModelAttribute("vo") HouseSearchVO houseSearchVO, Model model, Integer pageNum) { HouseSearch houseSearch = getHouseSearch(houseSearchVO); if (pageNum == null) {
pageNum = 1;
} PageHelper.startPage(pageNum, Constant.PAGE_SIZE);
List<House> serach = houseService.serach(houseSearch);
PageInfo<House> pageInfo = new PageInfo<>(serach); model.addAttribute("pageInfo", pageInfo);
return "list";
} private HouseSearch getHouseSearch(HouseSearchVO houseSearchVO) {
HouseSearch houseSearch = new HouseSearch();
if (!StringUtils.isEmpty(houseSearchVO.getHouseName())) {
houseSearch.setHouseName(houseSearchVO.getHouseName());
}
if (!StringUtils.isEmpty(houseSearchVO.getFloorage())) {
String[] split = houseSearchVO.getFloorage().split("-");
houseSearch.setMinRect(Double.valueOf(split[0]));
houseSearch.setMaxRect(Double.valueOf(split[1]));
}
return houseSearch;
} }

HouseController.java

 package com.etc.servise;

 import com.etc.entity.HouseSearch;
import com.etc.dao.HouseDAO;
import com.etc.entity.House;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; @Service
public class HouseService { @Autowired
private HouseDAO houseDAO; public void add(House house){
houseDAO.add(house);
} public List<House> serach(HouseSearch houseSearch){
List<House> serach = houseDAO.serach(houseSearch);
return serach;
} }

HouseService.java

 package com.etc.dao;

 import com.etc.entity.HouseSearch;
import com.etc.entity.House; import java.util.List; public interface HouseDAO { void add(House house); List<House> serach(HouseSearch houseSearch);
}

HouseDAO.java

 package com.etc.Vo;

 import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; @Data
@AllArgsConstructor
@NoArgsConstructor
public class HouseSearchVO {
private String houseName;
private String floorage;
}

HouseSearchVO

 package com.etc.entity;

 import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; @Data
@AllArgsConstructor
@NoArgsConstructor
public class HouseSearch {
private String houseName;
private Double minRect;
private Double maxRect; }

HouseSearch

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0030)http://localhost:8080/House-2/ -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>布谷租房 - 首页</TITLE>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<LINK rel=stylesheet type=text/css href="../css/style.css">
<META name=GENERATOR content="MSHTML 8.00.7601.17514"></HEAD>
<BODY>
<DIV id=header class=wrap>
<DIV id=logo><IMG src="../images/logo.gif"></DIV></DIV>
<DIV id=navbar class=wrap>
<DL class="search clearfix">
<FORM id=sform method=post action=/house/serach>
<input type="hidden" id="pageNum" name="pageNum">
<DT>
<UL>
<LI class=bold>房屋信息</LI>
<LI>标题:<INPUT class=text type=text name=houseName value="${vo.houseName}"> <LABEL class=ui-blue>
<INPUT value=搜索房屋 type=submit name=search></LABEL>
</LI></UL></DT>
<DD>
<UL>
<LI class=first>面积 </LI>
<LI><SELECT name=floorage> <OPTION ${vo.floorage==""?"selected":""} selected value="">不限</OPTION> <OPTION
value=0-40 ${vo.floorage=="0-40"?"selected":""}>40以下</OPTION> <OPTION value=40-500 ${vo.floorage=="40-500"?"selected":""}>40-500</OPTION> <OPTION
value=500-1000000 ${vo.floorage=="500-1000000"?"selected":""}>500以上</OPTION></SELECT> </LI></UL></DD>
<DD>
<UL>
<LI class=first>价格 </LI>
<LI><SELECT name=price> <OPTION selected value="">不限</OPTION> <OPTION
value=0-100 >100元以下</OPTION> <OPTION value=100-200 >100元—200元</OPTION>
<OPTION value=200-1000000 >200元以上</OPTION></SELECT> </LI></UL></DD>
<DD>
<UL>
<LI class=first>房屋位置</LI>
<LI><SELECT id=street name=street_id> <OPTION selected
value="">不限</OPTION> <OPTION value=1000>知春路</OPTION> <OPTION
value=1001>中关村大街</OPTION> <OPTION value=1002>学院路</OPTION> <OPTION
value=1003>朝阳路</OPTION></SELECT> </LI></UL></DD>
<DD>
<UL>
<LI class=first>房型</LI>
<LI><SELECT name=type_id> <OPTION selected value="">不限</OPTION> <OPTION
value=1000>一室一厅</OPTION> <OPTION value=1001>一室两厅</OPTION> <OPTION
value=1002>两室一厅</OPTION> <OPTION value=1003>两室两厅</OPTION></SELECT>
</LI></UL></DD>
</FORM></DL></DIV>
<DIV class="main wrap">
<TABLE class=house-list>
<TBODY>
<c:forEach items="${pageInfo.list}" var="house">
<TR>
<TD class=house-thumb><span><A href="../../details.jsp" target="_blank"><img src="/house/images?imgName=${house.HImg}" width="100" height="75" alt=""></a></span></TD>
<TD>
<DL>
<DT><A href="../../details.jsp" target="_blank">${house.HName}</A></DT>
<DD>${house.HLoc1}${house.HLoc2},${house.HRect}平米<BR>联系方式:3456 </DD></DL></TD>
<TD class=house-type>一室一厅</TD>
<TD class=house-price><SPAN>346.0</SPAN>元/月</TD></TR>
</c:forEach>
</TBODY></TABLE>
<DIV class=pager>
<UL>
<LI class=current><A href="javascript:void(0)" onclick="form(${pageInfo.firstPage})">首页</A></LI>
<LI><A href="javascript:void(0)" onclick="form(${pageInfo.hasPreviousPage?pageInfo.prePage:pageInfo.pageNum})">上一页</A></LI>
<LI><A href="javascript:void(0)" onclick="form(${pageInfo.hasNextPage?pageInfo.nextPage:pageInfo.pageNum})">下一页</A></LI>
<LI><A href="javascript:void(0)" onclick="form(${pageInfo.lastPage})">末页</A></LI></UL><SPAN
class=total>${pageInfo.pageNum}/${pageInfo.pages}页</SPAN> </DIV></DIV>
<DIV id=footer class=wrap>
<DL>
<DT>布谷租房 © 2010 布谷租房 京ICP证1000001号</DT>
<DD>关于我们 · 联系方式 · 意见反馈 · 帮助中心</DD></DL></DIV></BODY><script>
function form(pageNum){
var page=document.getElementById("pageNum");
page.value=pageNum;
var form=document.getElementById("sform");
form.submit();
} </script></HTML>

list.jsp

SSM整合 mybatis多条件查询与分页的更多相关文章

  1. mybatis 按照条件查询

    mybatis 按照条件查询 @Autowired private StudentMapper studentMapper; @Override public Map getStudentList(i ...

  2. Mybatis多条件查询

    在Mybatis多条件查询中: 1.参数如果是多条件,则需要将将添加到Map集合中进行传入. 2.就是将其参数用有序数字进行代替. Mybatis单个String类型参数传递 mysql文如下,传入参 ...

  3. WebFrom 小程序【条件查询与分页整合】

    将前面的条件查询功能与分页显示整合到一个页面中 <%@ Page Language="C#" AutoEventWireup="true" CodeFil ...

  4. SpringBoot整合mybatis使用pageHelper插件进行分页操作

    SpringBoot整合mybatis分页操作 SpringBoot整合Mybatis进行分页操作,这里需要使用Mybatis的分页插件:pageHelper, 关于pageHelper的介绍,请查看 ...

  5. SSM整合---实现全部用户查询

    SSM整合 准备 1.创建工程 2.导入必须jar包 链接: https://pan.baidu.com/s/1nvCDQJ3 密码: v5xs 3.工程结构 代码 SqlMapConfig < ...

  6. TP条件查询和分页查询

    一.条件查询 前端页面 <!doctype html> <html> <head> <meta charset="utf-8"> & ...

  7. Spring MVC和Spring Data JPA之按条件查询和分页(kkpaper分页组件)

    推荐视频:尚硅谷Spring Data JPA视频教程,一学就会,百度一下就有, 后台代码:在DAO层继承Spring Data JPA的PagingAndSortingRepository接口实现的 ...

  8. ssm整合——Mybatis配置(1)

    mybatis搭建-基于注解 1. 环境准备 1.1 新建maven的webapp项目 1.2 新建必要的目录和文件 1.3 文件配置 pom.xml junit默认创建是4.11,手动改成4.12 ...

  9. MyBatis参数条件查询传入的值为0时的判断

    MyBatis条件查询对字段判断是否为空一般为: <if test="testValue!=null and testValue != ''"> and test_va ...

随机推荐

  1. hdu 3068 最长回文(manacher入门)

    最长回文 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. Leetcode929.Unique Email Addresses独特的电子邮件地址

    每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名. 除了小写字母,这些电 ...

  3. 【水滴石穿】React-Redux-Demo

    这个项目没有使用什么组件,可以理解就是个redux项目 项目地址为:https://github.com/HuPingKang/React-Redux-Demo 先看效果图 点击颜色字体颜色改变,以及 ...

  4. JQuery--mouseover()与moseout()的区别

    mouseover()与mouseout()区别 普通鼠标移入移出事件 语法: mouseover()/mouseout() 功能: 当鼠标移入/移出到添加事件的元素或其子元素的时候,都会被触发!!m ...

  5. 使用JS如何消除一个数组里重复的元素

    JS: var arrData = [1,3,5,7,7,8,9,3,10,8,"sdsdsds","sss","ffff","s ...

  6. 使用curl指令实现restful接口操作

    curl 是很方便的Rest客戶端,可以很方便的完成許多Rest API測試的需求,甚至,如果是需要先登入或認證的rest api,也可以進行測試,利用curl指令,可以送出HTTP GET, POS ...

  7. oracle-Expdp/impdp命令

    建立逻辑路径 create or replace directory dumpdir as 'c:\'; grant read,write on directory dumpdir to scott; ...

  8. 洛谷2254 BZOJ1499 瑰丽华尔兹题解

    洛谷链接 BZ链接 一个很容易想到的做法就是用f[i][j][t]表示t时刻在i,j处的可以滑动的最大值 f[i][j][t]=max(f[i][j][t-1],f[*i][*j][t-1]),这样大 ...

  9. 【JZOJ4884】【NOIP2016提高A组集训第12场11.10】图的半径

    题目描述 mhy12345学习了树的直径,于是开始研究图的半径,具体来说,我们需要在图中选定一个地方作为中心,其中这个中心有可能在路径上. 而这个中心的选址需要能够使得所有节点达到这个中心的最短路里面 ...

  10. C++模板编译模型

    一:传统的编译模型 使用C/C++进行编程时,一般会使用头文件以使定义和声明分离,并使得程序以模块方式组织.将函数声明.类的定义放在头文件中,而将函数实现以及类成员函数的定义放在独立的文件中. 但是对 ...