SSM整合 mybatis多条件查询与分页

多条件查询与分页:

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

 分页插件:

 页面显示:

源码:

 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.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.stereotype.Controller;
15 import org.springframework.ui.Model;
16 import org.springframework.util.StringUtils;
17 import org.springframework.web.bind.annotation.RequestMapping;
18 
19 import javax.servlet.http.HttpSession;
20 import java.io.File;
21 import java.io.IOException;
22 import java.util.List;
23 
24 @Controller
25 @RequestMapping("/house")
26 public class HouseController {
27 
28     public static final String UPLOAD_DIR="D:\\images\\";
29 
30     @Autowired
31     private HouseService houseService;
32 
33     @RequestMapping("/add")
34     public String add(HouseVO houseVO, HttpSession session) throws IOException {
35         //获取session中的user对象
36         User user=(User) session.getAttribute("user");
37         //拿到user对象的id
38         int userId=user.getUserId();
39         //设置文件上传的路径
40         houseVO.getHImg().transferTo(new File(UPLOAD_DIR+houseVO.getHImg().getOriginalFilename()));
41         //建立house对象
42         House house=HouseConverter.convert(houseVO,houseVO.getHImg().getOriginalFilename(),userId);
43         //调用添加方法
44         houseService.add(house);
45         return "list";
46     }
47 
48     @RequestMapping("/serach")
49     public String serach(HouseSearchVO houseSearchVO, Model model,Integer pageNum) {
50         if(pageNum==null){
51             pageNum=1;
52         }
53 
54         HouseSearch houseSearch = getHouseSearch(houseSearchVO);
55         List<House> serach = houseService.serach(houseSearch);
56 
57         PageHelper.startPage(pageNum, Constant.PAGE_SIZE);
58         PageInfo<House> pageInfo = new PageInfo<>(serach);
59         model.addAttribute("pageInfo",pageInfo);
60         return "list";
61     }
62 
63     private HouseSearch getHouseSearch(HouseSearchVO houseSearchVO) {
64         HouseSearch houseSearch =new HouseSearch();
65         if(!StringUtils.isEmpty(houseSearchVO.getHouseName())){
66             houseSearch.setHouseName(houseSearchVO.getHouseName());
67         }
68         if(!StringUtils.isEmpty(houseSearchVO.getFloorage())){
69             String[] split = houseSearchVO.getFloorage().split("-");
70             houseSearch.setMinRect(Double.valueOf(split[0]));
71             houseSearch.setMaxRect(Double.valueOf(split[1]));
72         }
73         return houseSearch;
74     }
75 
76 }
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   <DT>
15   <UL>
16     <LI class=bold>房屋信息</LI>
17     <LI>标题:<INPUT class=text type=text name=houseName> <LABEL class=ui-blue>
18               <INPUT value=搜索房屋 type=submit name=search></LABEL>
19     </LI></UL></DT>
20     <DD>
21       <UL>
22         <LI class=first>面积 </LI>
23         <LI><SELECT name=floorage> <OPTION selected value="">不限</OPTION> <OPTION
24                 value=0-40>40以下</OPTION> <OPTION value=40-500>40-500</OPTION> <OPTION
25                 value=500-1000000>500以上</OPTION></SELECT> </LI></UL></DD>
26   <DD>
27   <UL>
28     <LI class=first>价格 </LI>
29     <LI><SELECT name=price> <OPTION selected value="">不限</OPTION> <OPTION 
30       value=0-100>100元以下</OPTION> <OPTION value=100-200>100元—200元</OPTION> 
31       <OPTION value=200-1000000>200元以上</OPTION></SELECT> </LI></UL></DD>
32   <DD>
33   <UL>
34     <LI class=first>房屋位置</LI>
35     <LI><SELECT id=street name=street_id> <OPTION selected 
36       value="">不限</OPTION> <OPTION value=1000>知春路</OPTION> <OPTION 
37       value=1001>中关村大街</OPTION> <OPTION value=1002>学院路</OPTION> <OPTION 
38       value=1003>朝阳路</OPTION></SELECT> </LI></UL></DD>
39   <DD>
40   <UL>
41     <LI class=first>房型</LI>
42     <LI><SELECT name=type_id> <OPTION selected value="">不限</OPTION> <OPTION 
43       value=1000>一室一厅</OPTION> <OPTION value=1001>一室两厅</OPTION> <OPTION 
44       value=1002>两室一厅</OPTION> <OPTION value=1003>两室两厅</OPTION></SELECT> 
45   </LI></UL></DD>
46 </FORM></DL></DIV>
47 <DIV class="main wrap">
48   <TABLE class=house-list>
49     <TBODY>
50     <c:forEach items="${pageInfo.list}" var="house">
51       <TR>
52         <TD class=house-thumb><span><A href="../../details.jsp" target="_blank"><img src="../images/thumb_house.gif" width="100" height="75" alt=""></a></span></TD>
53         <TD>
54           <DL>
55             <DT><A href="../../details.jsp" target="_blank">${house.HName}</A></DT>
56             <DD>${house.HLoc1}${house.HLoc2},${house.HRect}平米<BR>联系方式:3456 </DD></DL></TD>
57         <TD class=house-type>一室一厅</TD>
58         <TD class=house-price><SPAN>346.0</SPAN>元/月</TD></TR>
59     </c:forEach>
60     </TBODY></TABLE>
61   <DIV class=pager>
62     <UL>
63       <LI class=current><A href="?pageNum=${pageInfo.firstPage}">首页</A></LI>
64       <LI><A href="?pageNum=${pageInfo.hasPreviousPage?pageInfo.prePage:pageInfo.pageNum}">上一页</A></LI>
65       <LI><A href="?pageNum=${pageInfo.hasNextPage?pageInfo.nextPage:pageInfo.pageNum}">下一页</A></LI>
66       <LI><A href="?pageNum=${pageInfo.lastPage}">末页</A></LI></UL><SPAN
67           class=total>${pageInfo.pageNum}/${pageInfo.pages}页</SPAN> </DIV></DIV>
68 <DIV id=footer class=wrap>
69 <DL>
70   <DT>布谷租房 © 2010 布谷租房 京ICP证1000001号</DT>
71   <DD>关于我们 · 联系方式 · 意见反馈 · 帮助中心</DD></DL></DIV></BODY></HTML>
list.jsp

猜你喜欢

转载自www.cnblogs.com/LiuOOP/p/11254992.html