多条件查询与分页:

通过页面的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:

源码:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 3 <mapper namespace="com.etc.dao.HouseDAO">
 4     <insert id="add">
 5  INSERT INTO `t_house` (
 6     `h_name`,
 7     `h_rect`,
 8     `h_date`,
 9     `h_loc1`,
10     `h_loc2`,
11     `h_img`,
12     `h_userId`
13 )
14 VALUES
15     (
16         #{hName},
17         #{hRect},
18         #{hDate},
19         #{hLoc1},
20         #{hLoc2},
21         #{hImg},
22         #{userId}
23     );
24 </insert>
25
26     <select id="serach" resultType="house">
27         SELECT * from `t_house`
28         <where>
29             <if test="houseName!=null">
30                 h_name like '%${houseName}%'
31             </if>
32             <if test="minRect!=null and maxRect!=null">
33                 and h_rect between #{minRect} and #{maxRect}
34             </if>
35         </where>
36
37     </select>
38
39 </mapper>

HouseDAO.xml

 1 package com.etc.controller;
 2
 3 import com.etc.Vo.HouseSearchVO;
 4 import com.etc.Vo.HouseVO;
 5 import com.etc.common.Constant;
 6 import com.etc.converter.HouseConverter;
 7 import com.etc.entity.House;
 8 import com.etc.entity.HouseSearch;
 9 import com.etc.entity.User;
10 import com.etc.servise.HouseService;
11 import com.github.pagehelper.PageHelper;
12 import com.github.pagehelper.PageInfo;
13 import org.apache.commons.io.IOUtils;
14 import org.springframework.beans.factory.annotation.Autowired;
15 import org.springframework.stereotype.Controller;
16 import org.springframework.ui.Model;
17 import org.springframework.util.StringUtils;
18 import org.springframework.web.bind.annotation.ModelAttribute;
19 import org.springframework.web.bind.annotation.RequestMapping;
20
21 import javax.servlet.http.HttpServletResponse;
22 import javax.servlet.http.HttpSession;
23 import java.io.File;
24 import java.io.FileInputStream;
25 import java.io.IOException;
26 import java.util.List;
27
28 @Controller
29 @RequestMapping("/house")
30 public class HouseController {
31
32     public static final String UPLOAD_DIR = "D:\\images\\";
33
34     @RequestMapping("/images")
35     public String images(String imgName, HttpServletResponse response) throws IOException {
36         //将图片的输入流,复制到response的输出流中,
37         IOUtils.copy(new FileInputStream(UPLOAD_DIR+imgName),response.getOutputStream());
38         return null;
39     }
40
41
42     @Autowired
43     private HouseService houseService;
44
45     @RequestMapping("/add")
46     public String add(HouseVO houseVO, HttpSession session) throws IOException {
47         //获取session中的user对象
48         User user = (User) session.getAttribute("user");
49         //拿到user对象的id
50         int userId = user.getUserId();
51         //设置文件上传的路径
52         houseVO.getHImg().transferTo(new File(UPLOAD_DIR + houseVO.getHImg().getOriginalFilename()));
53         //建立house对象
54         House house = HouseConverter.convert(houseVO, houseVO.getHImg().getOriginalFilename(), userId);
55         //调用添加方法
56         houseService.add(house);
57         return "list";
58     }
59
60     @RequestMapping("/serach")
61     public String serach(@ModelAttribute("vo") HouseSearchVO houseSearchVO, Model model, Integer pageNum) {
62
63         HouseSearch houseSearch = getHouseSearch(houseSearchVO);
64
65         if (pageNum == null) {
66             pageNum = 1;
67         }
68
69         PageHelper.startPage(pageNum, Constant.PAGE_SIZE);
70         List<House> serach = houseService.serach(houseSearch);
71         PageInfo<House> pageInfo = new PageInfo<>(serach);
72
73         model.addAttribute("pageInfo", pageInfo);
74         return "list";
75     }
76
77     private HouseSearch getHouseSearch(HouseSearchVO houseSearchVO) {
78         HouseSearch houseSearch = new HouseSearch();
79         if (!StringUtils.isEmpty(houseSearchVO.getHouseName())) {
80             houseSearch.setHouseName(houseSearchVO.getHouseName());
81         }
82         if (!StringUtils.isEmpty(houseSearchVO.getFloorage())) {
83             String[] split = houseSearchVO.getFloorage().split("-");
84             houseSearch.setMinRect(Double.valueOf(split[0]));
85             houseSearch.setMaxRect(Double.valueOf(split[1]));
86         }
87         return houseSearch;
88     }
89
90 }

HouseController.java

 1 package com.etc.servise;
 2
 3 import com.etc.entity.HouseSearch;
 4 import com.etc.dao.HouseDAO;
 5 import com.etc.entity.House;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Service;
 8
 9 import java.util.List;
10
11 @Service
12 public class HouseService {
13
14     @Autowired
15     private HouseDAO houseDAO;
16
17     public void add(House house){
18         houseDAO.add(house);
19     }
20
21     public List<House> serach(HouseSearch houseSearch){
22         List<House> serach = houseDAO.serach(houseSearch);
23         return serach;
24     }
25
26 }

HouseService.java

 1 package com.etc.dao;
 2
 3 import com.etc.entity.HouseSearch;
 4 import com.etc.entity.House;
 5
 6 import java.util.List;
 7
 8 public interface HouseDAO {
 9
10     void add(House house);
11
12     List<House> serach(HouseSearch houseSearch);
13 }

HouseDAO.java

 1 package com.etc.Vo;
 2
 3 import lombok.AllArgsConstructor;
 4 import lombok.Data;
 5 import lombok.NoArgsConstructor;
 6
 7 @Data
 8 @AllArgsConstructor
 9 @NoArgsConstructor
10 public class HouseSearchVO {
11     private String houseName;
12     private String floorage;
13 }

HouseSearchVO

 1 package com.etc.entity;
 2
 3 import lombok.AllArgsConstructor;
 4 import lombok.Data;
 5 import lombok.NoArgsConstructor;
 6
 7 @Data
 8 @AllArgsConstructor
 9 @NoArgsConstructor
10 public class HouseSearch {
11     private String houseName;
12     private Double minRect;
13     private Double maxRect;
14
15 }

HouseSearch

 1 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
 3 <!-- saved from url=(0030)http://localhost:8080/House-2/ -->
 4 <HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>布谷租房 - 首页</TITLE>
 5 <META content="text/html; charset=utf-8" http-equiv=Content-Type>
 6 <LINK rel=stylesheet type=text/css href="../css/style.css">
 7 <META name=GENERATOR content="MSHTML 8.00.7601.17514"></HEAD>
 8 <BODY>
 9 <DIV id=header class=wrap>
10 <DIV id=logo><IMG src="../images/logo.gif"></DIV></DIV>
11 <DIV id=navbar class=wrap>
12 <DL class="search clearfix">
13   <FORM id=sform method=post action=/house/serach>
14       <input type="hidden" id="pageNum" name="pageNum">
15   <DT>
16   <UL>
17     <LI class=bold>房屋信息</LI>
18     <LI>标题:<INPUT class=text type=text name=houseName value="${vo.houseName}"> <LABEL class=ui-blue>
19               <INPUT value=搜索房屋 type=submit name=search></LABEL>
20     </LI></UL></DT>
21     <DD>
22       <UL>
23         <LI class=first>面积 </LI>
24         <LI><SELECT name=floorage> <OPTION ${vo.floorage==""?"selected":""} selected value="">不限</OPTION> <OPTION
25                 value=0-40 ${vo.floorage=="0-40"?"selected":""}>40以下</OPTION> <OPTION value=40-500 ${vo.floorage=="40-500"?"selected":""}>40-500</OPTION> <OPTION
26                 value=500-1000000 ${vo.floorage=="500-1000000"?"selected":""}>500以上</OPTION></SELECT> </LI></UL></DD>
27   <DD>
28   <UL>
29     <LI class=first>价格 </LI>
30     <LI><SELECT name=price> <OPTION  selected value="">不限</OPTION> <OPTION
31       value=0-100 >100元以下</OPTION> <OPTION value=100-200 >100元—200元</OPTION>
32       <OPTION value=200-1000000 >200元以上</OPTION></SELECT> </LI></UL></DD>
33   <DD>
34   <UL>
35     <LI class=first>房屋位置</LI>
36     <LI><SELECT id=street name=street_id> <OPTION selected
37       value="">不限</OPTION> <OPTION value=1000>知春路</OPTION> <OPTION
38       value=1001>中关村大街</OPTION> <OPTION value=1002>学院路</OPTION> <OPTION
39       value=1003>朝阳路</OPTION></SELECT> </LI></UL></DD>
40   <DD>
41   <UL>
42     <LI class=first>房型</LI>
43     <LI><SELECT name=type_id> <OPTION selected value="">不限</OPTION> <OPTION
44       value=1000>一室一厅</OPTION> <OPTION value=1001>一室两厅</OPTION> <OPTION
45       value=1002>两室一厅</OPTION> <OPTION value=1003>两室两厅</OPTION></SELECT>
46   </LI></UL></DD>
47 </FORM></DL></DIV>
48 <DIV class="main wrap">
49   <TABLE class=house-list>
50     <TBODY>
51     <c:forEach items="${pageInfo.list}" var="house">
52       <TR>
53         <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>
54         <TD>
55           <DL>
56             <DT><A href="../../details.jsp" target="_blank">${house.HName}</A></DT>
57             <DD>${house.HLoc1}${house.HLoc2},${house.HRect}平米<BR>联系方式:3456 </DD></DL></TD>
58         <TD class=house-type>一室一厅</TD>
59         <TD class=house-price><SPAN>346.0</SPAN>元/月</TD></TR>
60     </c:forEach>
61     </TBODY></TABLE>
62   <DIV class=pager>
63     <UL>
64       <LI class=current><A href="javascript:void(0)" onclick="form(${pageInfo.firstPage})">首页</A></LI>
65       <LI><A href="javascript:void(0)" onclick="form(${pageInfo.hasPreviousPage?pageInfo.prePage:pageInfo.pageNum})">上一页</A></LI>
66       <LI><A href="javascript:void(0)" onclick="form(${pageInfo.hasNextPage?pageInfo.nextPage:pageInfo.pageNum})">下一页</A></LI>
67       <LI><A href="javascript:void(0)" onclick="form(${pageInfo.lastPage})">末页</A></LI></UL><SPAN
68           class=total>${pageInfo.pageNum}/${pageInfo.pages}页</SPAN> </DIV></DIV>
69 <DIV id=footer class=wrap>
70 <DL>
71   <DT>布谷租房 © 2010 布谷租房 京ICP证1000001号</DT>
72   <DD>关于我们 · 联系方式 · 意见反馈 · 帮助中心</DD></DL></DIV></BODY><script>
73      function form(pageNum){
74          var page=document.getElementById("pageNum");
75          page.value=pageNum;
76          var form=document.getElementById("sform");
77          form.submit();
78     }
79
80 </script></HTML>

list.jsp

转载于:https://www.cnblogs.com/LiuOOP/p/11254992.html

SSM整合 mybatis多条件查询与分页相关推荐

  1. java mongodb 多表关联查询,多条件查询,分页,排序

    前言: 由于最近项目赶,版本迭代快,不知道大BOSS从哪里听别人说MongoDB用来做关系型数据库好,而且速度快,性能高:听到这话的我,立马就反驳了回去:"MongoDB不支持事物" ...

  2. 谷粒学院-分页查询、条件查询带分页、添加、修改

    讲师分页查询 注意:也可以使用MyBatis分页插件PageHelper,这里不用 https://blog.csdn.net/ZHOU_VIP/article/details/121773800 1 ...

  3. mybatis-puls条件查询、分页功能

    mybatis-puls条件查询.分页功能 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 My ...

  4. Spring整合Mybatis之关联查询示例

    Spring整合Mybatis之关联查询示例 目录结构: Dept表: employee表: pojo包 Dept.java(实体类): package com.xmm.springboot_lab. ...

  5. SSM整合——实现图书的查询功能

    这里以图书查询的功能为例子,来进行SSM的整合,从创建数据库,到导入jar包,一步一步的进行整合,直到能跑为止,我也是初学SSM整合,这里只是给出了能跑起来的代码,里面有简单的注释,并没有详细讲解原理 ...

  6. Mybatis Plus条件查询

    QueryWrapper 说明:继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 new Que ...

  7. oracle存储过程 多条件,Oracle多条件查询实际分页存储过程实操

    以下的文章主要是介绍Oracle多条件查询分页存储过程,以下就是Oracle多条件查询分页存储过程具体方案的描述,希望在你今后的学习中会有所帮助.将业务逻辑放到Oracle中使得后台代码很精简,Ora ...

  8. mysql 条件查询分页_百万数据下mysql条件查询及分页查询的注意事项

    接上一节<百万数据mysql分页问题>,我们加上查询条件:select id from news where cate = 1 order by id desc limit 500000 ...

  9. DJango 多条件查询结果分页

    为什么80%的码农都做不了架构师?>>>    在学习Django中,练手做了个项目,在实际编程当中发现了N多个坑,现在记录下心得体会,方便以后查询,本人Models只使用了一张表, ...

最新文章

  1. 用thttpd做Web Server
  2. Pythonic版冒泡排序和快速排序(附:直接插入排序)
  3. C++ map的使用
  4. accp8.0转换教材第1章多线程理解与练习
  5. 《Getting Started with WebRTC》第二章 WebRTC技术介绍
  6. iOS 对 HTTPS 证书链的验证
  7. AjaxControltoolkit学习笔记—ListSearch 使用详解
  8. o2o模式都有哪些应用场景?
  9. lua牛牛算法和大小比较
  10. c++链表——银行账户管理系统
  11. Antd Form Upload 报fileList错误-解决方案
  12. echarts:实现legend中的textBorderColor动态改变问题
  13. 帐套文件(*.mdf)无法复制,拷贝出现数据错误(循环冗余检查)帐套文件(*.mdf)无法复制,拷贝出现数据错误(循环冗余检查),sql附加823错误
  14. [论文笔记]Rob-GAN: Generator, Discriminator, and Adversarial Attacker(CVPR 2019)
  15. tensor 增加维度_tensor维度变换
  16. 2020湖南省技能竞赛获奖名单_雄安新区网络安全技能竞赛举办!9人获奖!
  17. html5复选框控制按钮状态,HTML input checkbox复选按钮简介说明
  18. 修改STM32的USB程序
  19. js 设置读秒验证码
  20. 一步移民加拿大,BC省雇主担保移民项目

热门文章

  1. linux磁盘的命令是,linux磁盘相关的命令
  2. java4android代码_Android逆向-java代码基础(4)
  3. sap后台配置原因代码_【MM配置】Inventory Management 库存管理
  4. 京东抢购机器人_双十二什么值得买?会自动收垃圾的扫拖机器人了解一下
  5. php线程安全和非线程安全_安全调用线程的步骤
  6. MATLAB模拟声压分布,基于Matlab仿真软件构建圆形压电晶体三维模型
  7. 利用for循环打印出不同的三角形
  8. 修改ElementUI样式的几种方式
  9. Lettuce替换Jedis操作Redis缓存
  10. Mysql数据类型blob存储长度