mybatis傳遞map中含有list數據結構的處理整合springmvc

<?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.xiong.mendianfu.dao.DingDanDao">
    <resultMap id="dingdanbean" type="com.xiong.mendianfu.bean.Dingdan">
        <id property="dingdanid" column="dingdanid"></id>
        <result property="dingdanjine" column="dingdanjine"></result>
        <result property="dingdanzhuangtai" column="dingdanzhuangtai"></result>
        <result property="dingdanshijian" column="dingdanshijian"></result>
       <association property="mendian"  javaType="com.xiong.mendianfu.bean.Mendian" >
           <id property="mendianid" column="mendianid"></id>
           <result property="biaoshi" column="biaoshi"></result>
           <result property="mingcheng" column="mingcheng"></result>
           <result property="dizhi" column="dizhi"></result>
           <result property="dianhua" column="dianhua"></result>
           <result property="adminopenid" column="adminopenid"></result>
       </association>
    </resultMap>
    <select id="queryDingdan" parameterType="java.util.Map"  resultMap="dingdanbean">
         SELECT dingdanid,dingdanjine, dingdanzhuangtai,dingdanshijian,
         b.biaoshi,b.mingcheng,b.dizhi,b.dianhua,b.adminopenid
         FROM dingdan a
         INNER JOIN mendian b ON a.mendianid = b.mendianid
             <if test="biaoshi!=null and biaoshi !=''">
                WHERE b.biaoshi  LIKE CONCAT(CONCAT('%', #{keyword}, '%'))
             </if>
             <if test="mingcheng!=null and mingcheng !=''">
                 WHERE b.mingcheng  LIKE CONCAT(CONCAT('%', #{keyword}, '%'))
             </if>
            LIMIT #{currentRow},#{pageSize}
    </select>
    <select id="getPageCount" resultType="java.util.Map" parameterType="java.util.Map">
        SELECT COUNT(*) AS totalRow,CEIL(COUNT(*)/#{pageSize}) AS totalPage
        FROM (SELECT dingdanid,dingdanjine, dingdanzhuangtai,dingdanshijian,
        b.biaoshi,b.mingcheng,b.dizhi,b.dianhua,b.adminopenid
        FROM dingdan a
        INNER JOIN mendian b ON a.mendianid = b.mendianid
            <if test="biaoshi!=null and biaoshi !=''">
                WHERE b.biaoshi LIKE CONCAT( CONCAT('%', #{keyword}, '%'))
            </if>
            <if test="mingcheng!=null and mingcheng !=''">
                WHERE   b.mingcheng  LIKE CONCAT(CONCAT('%', #{keyword}, '%'))
            </if>
        )
        AS amendian
    </select>
    <select id="queryDingdanByqiye" resultType="java.util.Map" parameterType="java.util.Map">
        SELECT  SUM(a.dingdanjine) AS dingdansum , c.qiyeid AS qiyeid,c.mingcheng AS qiyemingcheng
        FROM dingdan a LEFT JOIN mendian d  ON d.mendianid=a.mendianid
        LEFT JOIN qiye c ON c.qiyeid=d.qiyeid
        WHERE  a.dingdanzhuangtai='ZHIFU'
         <if test="_parameter.containsKey('mingcheng')">
             AND c.mingcheng
             IN
             <foreach collection="list" item="item"  open="(" close=")" index="index" separator=",">
                 #{item}
             </foreach>
         </if>
        <if test="_parameter.containsKey('year')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 YEAR )
        </if>
        <if test="_parameter.containsKey('halfyear')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 6 MONTH )
        </if>
        <if test="_parameter.containsKey('month')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 MONTH )
        </if>
        <if test="_parameter.containsKey('week')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 WEEK)
        </if>
        <if test="_parameter.containsKey('day')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 DAY)
        </if>
        GROUP BY c.qiyeid
    </select>
    <select id="queryDingdanBymendian" parameterType="java.util.Map" resultType="java.util.Map">
        SELECT  SUM(a.dingdanjine) AS dingdansum ,d.mingcheng AS mendianmingcheng , c.qiyeid AS qiyeid,c.mingcheng AS qiyemingcheng
        FROM dingdan a LEFT JOIN mendian d  ON d.mendianid=a.mendianid
        LEFT JOIN qiye c ON c.qiyeid=d.qiyeid
        WHERE  a.dingdanzhuangtai='ZHIFU'
        AND c.qiyeid=#{qiyeid}
        <if test="_parameter.containsKey('mingcheng')">
            AND d.mingcheng
            IN
            <foreach collection="list" item="item"  open="(" close=")" index="index" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="_parameter.containsKey('year')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 YEAR )
        </if>
        <if test="_parameter.containsKey('halfyear')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 6 MONTH )
        </if>
        <if test="_parameter.containsKey('month')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 MONTH )
        </if>
        <if test="_parameter.containsKey('week')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 WEEK)
        </if>
        <if test="_parameter.containsKey('day')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 DAY)
        </if>
        GROUP BY d.mendianid
    </select>
    <select id="queryDingdanByID" resultMap="dingdanbean">
        SELECT dingdanid,dingdanjine, dingdanzhuangtai,dingdanshijian,
        b.biaoshi,b.mingcheng,b.dizhi,b.dianhua,b.adminopenid
        FROM dingdan a
        INNER JOIN mendian b ON a.mendianid = b.mendianid
        WHERE a.dingdanid=#{dingdanid}
    </select>
    <select id="queryDingdanByqiyeAdminopenid" parameterType="java.util.Map" resultType="java.util.Map">
        SELECT  SUM(a.dingdanjine) AS dingdansum ,d.mingcheng AS mendianmingcheng , c.qiyeid AS qiyeid,c.mingcheng AS qiyemingcheng
        FROM dingdan a LEFT JOIN mendian d  ON d.mendianid=a.mendianid
        LEFT JOIN qiye c ON c.qiyeid=d.qiyeid
        WHERE  a.dingdanzhuangtai='ZHIFU'
        AND c.adminopenid=#{adminopenid}
        <if test="_parameter.containsKey('year')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 YEAR )
        </if>
        <if test="_parameter.containsKey('halfyear')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 6 MONTH )
        </if>
        <if test="_parameter.containsKey('month')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 MONTH )
        </if>
        <if test="_parameter.containsKey('week')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 WEEK)
        </if>
        <if test="_parameter.containsKey('day')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 DAY)
        </if>
        GROUP BY d.mendianid
        LIMIT #{currentRow},#{pageSize}
    </select>
    <select id="queryDingdanBymendianAdmin" parameterType="java.util.Map" resultType="java.util.Map">
        SELECT  SUM(a.dingdanjine) AS dingdansum ,d.mingcheng AS mendianmingcheng , c.qiyeid AS qiyeid,c.mingcheng AS qiyemingcheng
        FROM dingdan a LEFT JOIN mendian d  ON d.mendianid=a.mendianid
        LEFT JOIN qiye c ON c.qiyeid=d.qiyeid
        WHERE  a.dingdanzhuangtai='ZHIFU'
        AND  d.adminopenid=#{adminopenid}
        <if test="_parameter.containsKey('year')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 YEAR )
        </if>
        <if test="_parameter.containsKey('halfyear')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 6 MONTH )
        </if>
        <if test="_parameter.containsKey('month')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 MONTH )
        </if>
        <if test="_parameter.containsKey('week')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 WEEK)
        </if>
        <if test="_parameter.containsKey('day')">
            AND  a.dingdanshijian  &gt;  date_sub(curdate(), INTERVAL 1 DAY)
        </if>
        GROUP BY d.mendianid
        LIMIT #{currentRow},#{pageSize}
    </select>
</mapper>

	
package com.xiong.mendianfu.services.impl;

import com.xiong.mendianfu.bean.PageList;
import com.xiong.mendianfu.dao.DingDanDao;
import com.xiong.mendianfu.dao.QiYeDao;
import com.xiong.mendianfu.services.DingdanService;
import com.xiong.mendianfu.utils.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class DingdanServiceImpl implements DingdanService {
    @Resource
     DingDanDao dingDanDao;
    /**
     *@see com.xiong.mendianfu.services.DingdanService#(String)
     */
    public PageList queryDingdan(String keyword,int currentPage,int pageSize,String biaoshi,String mingcheng){
        PageList pageList =  new PageList();
        pageList.setCurrentPage(currentPage);
        int currentRow = (currentPage-1) * pageSize;
        Map map=new HashMap();
        map.put("keyword",keyword);
        map.put("currentRow",currentRow);
        map.put("pageSize",pageSize);
        map.put("biaoshi",biaoshi);
        map.put("mingcheng",mingcheng);
        List list = dingDanDao.queryDingdan(map);
        Map<String, Object> pageCountMap = dingDanDao.getPageCount(map);
        pageList.setTotalRow(((Long)pageCountMap.get("totalRow")).intValue());
        pageList.setTotalPage(((BigDecimal)pageCountMap.get("totalPage")).intValue());
        pageList.setList(list);
        return pageList;
    }
     

    public  PageList queryDingdanByqiye(String mingchengs, String fanwei,int currentPage,int pageSize){
        PageList pageList =  new PageList();
        pageList.setCurrentPage(currentPage);
        int currentRow = (currentPage-1) * pageSize;
        Map map=new HashMap();
        map.put("fanwei",fanwei);
        map.put("currentRow",currentRow);
        map.put("pageSize",pageSize);
        if(mingchengs!=null){
            List list=new ArrayList();
            String [] qiyemingchengs=mingchengs.split(",");
            for(String qiyemingcheng:qiyemingchengs){
                list.add(qiyemingcheng);
            }
            map.put("list",list);
            map.put("mingcheng",null);
        }
        Map maps = MapUtils.getmap(map, fanwei);
        List list = dingDanDao.queryDingdanByqiye(maps);
        Map<String, Object> pageCountMap = dingDanDao.getPageCount(map);
        pageList.setTotalRow(((Long)pageCountMap.get("totalRow")).intValue());
        pageList.setTotalPage(((BigDecimal)pageCountMap.get("totalPage")).intValue());
        pageList.setList(list);
        return pageList ;
    }
 package com.xiong.mendianfu.controllers;


import com.xiong.mendianfu.bean.Dingdan;
import com.xiong.mendianfu.bean.PageList;
import com.xiong.mendianfu.services.DingdanService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *用於實現訂單的統計
 *
 */
@Controller
@RequestMapping("/dingdan")
public class DingdanController {
    @Resource
   private DingdanService dingdanService;
    @RequestMapping("/querydingdan")
    public ModelAndView queryDingdan(HttpServletRequest request, HttpServletResponse response){
        ModelAndView mv=new ModelAndView();
        String message=request.getParameter("message");
        String mingcheng=request.getParameter("mingcheng");
        String biaoshi=request.getParameter("biaoshi");
        int currentPage = Integer.parseInt(StringUtils.defaultString(request.getParameter("currentpage"), "1"));
        PageList pageList = new PageList();
        pageList.setCurrentPage(currentPage);
        int pageSize = 10;
        PageList list=dingdanService.queryDingdan(message,currentPage,pageSize,biaoshi,mingcheng);
        mv.addObject("DINGDANLIST", list);
        mv.setViewName("/dingdan/dingdanlist.jsp");
        return mv;
    }
    @RequestMapping("/queryDingdanByqiye")
    public ModelAndView queryDingdanByqiye(HttpServletRequest request, HttpServletResponse response){
        ModelAndView mv=new ModelAndView();
        String mingcheng=request.getParameter("mingcheng");
        String fanwei=request.getParameter("fanwei");
        int currentPage = Integer.parseInt(StringUtils.defaultString(request.getParameter("currentpage"), "1"));
        int pageSize=10;
        PageList list = dingdanService.queryDingdanByqiye(mingcheng,fanwei,currentPage,pageSize);
        mv.addObject("DINGDANQIYELIST", list);
        mv.setViewName("/dingdan/qiyedingdan.jsp");
        return mv;
    }
    @RequestMapping("/queryDingdanBymendian")
    public ModelAndView queryDingdanBymendian(HttpServletRequest request, HttpServletResponse response){
        ModelAndView mv=new ModelAndView();
        String qiyeid=request.getParameter("qiyeid");
        String fanwei=request.getParameter("fanwei");
        String mingcheng=request.getParameter("mingcheng");
        int currentPage = Integer.parseInt(StringUtils.defaultString(request.getParameter("currentpage"), "1"));
        int pageSize=10;
        PageList list = dingdanService.queryDingdanBymendian(qiyeid,mingcheng,fanwei,currentPage,pageSize);
        mv.addObject("QIYEIDINGDAN", list);
        mv.setViewName("/dingdan/qiyeshoufei.jsp");
        return mv;
    }
    @RequestMapping("/queryDingdanByID")
    public ModelAndView queryDingdanByID(HttpServletRequest request, HttpServletResponse response){
        ModelAndView mv=new ModelAndView();
        String dingdanid=request.getParameter("dingdanid");
        Dingdan dingdanbean = (Dingdan)dingdanService.queryDingdanByID(dingdanid);
        mv.addObject("DINGDANBEAN", dingdanbean);
        mv.setViewName("/dingdan/dingdanzhanshi.jsp");
        return mv;
    }
}
 

    

    public  PageList queryDingdanBymendian(String qiyeid, String mingcheng, String fanwei,int currentPage,int pageSize){
        PageList pageList =  new PageList();
        pageList.setCurrentPage(currentPage);
        int currentRow = (currentPage-1) * pageSize;
        Map map=new HashMap();
        map.put("qiyeid",qiyeid);
        if(mingcheng!=null){
            String [] mendianmingchengs=mingcheng.split(",");
            List list=new ArrayList();
            for(String mendianmingcheng:mendianmingchengs){
                list.add(mendianmingcheng);
            }
            map.put("list",list);
            map.put("mingcheng",null);
        }
        map.put("currentRow",currentRow);
        map.put("pageSize",pageSize);
        Map maps = MapUtils.getmap(map, fanwei);
        List list = dingDanDao.queryDingdanBymendian(maps);
        Map<String, Object> pageCountMap = dingDanDao.getPageCount(maps);
        pageList.setTotalRow(((Long)pageCountMap.get("totalRow")).intValue());
        pageList.setTotalPage(((BigDecimal)pageCountMap.get("totalPage")).intValue());
        pageList.setList(list);
        return pageList;
    }

    public  PageList queryDingdanByqiyeAdminopenid(String openid, String fanwei,int currentPage,int pageSize){
        PageList pageList =  new PageList();
        pageList.setCurrentPage(currentPage);
        int currentRow = (currentPage-1) * pageSize;
        Map map=new HashMap();
        map.put("adminopenid",openid);
        map.put("fanwei",fanwei);
        map.put("currentRow",currentRow);
        map.put("pageSize",pageSize);
        Map maps = MapUtils.getmap(map, fanwei);
        List list = dingDanDao.queryDingdanByqiyeAdminopenid(maps);
        Map<String, Object> pageCountMap = dingDanDao.getPageCount(maps);
        pageList.setTotalRow(((Long)pageCountMap.get("totalRow")).intValue());
        pageList.setTotalPage(((BigDecimal)pageCountMap.get("totalPage")).intValue());
        pageList.setList(list);
        return pageList;
    }

    public  PageList queryDingdanBymendianAdmin(String openid, String fanwei,int currentPage,int pageSize){
        PageList pageList =  new PageList();
        pageList.setCurrentPage(currentPage);
        int currentRow = (currentPage-1) * pageSize;
        Map map=new HashMap();
        map.put("adminopenid",openid);
        map.put("fanwei",fanwei);
        map.put("currentRow",currentRow);
        map.put("pageSize",pageSize);
        Map maps = MapUtils.getmap(map, fanwei);
        List list = dingDanDao.queryDingdanBymendianAdmin(maps);
        Map<String, Object> pageCountMap = dingDanDao.getPageCount(maps);
        pageList.setTotalRow(((Long)pageCountMap.get("totalRow")).intValue());
        pageList.setTotalPage(((BigDecimal)pageCountMap.get("totalPage")).intValue());
        pageList.setList(list);
        return pageList;
    }

    public  Object queryDingdanByID(String dingdanid){

        return dingDanDao.queryDingdanByID(dingdanid);
    }

    public DingDanDao getDingDanDao() {
        return dingDanDao;
    }

    public void setDingDanDao(DingDanDao dingDanDao) {
        this.dingDanDao = dingDanDao;
    }

}
 


package com.xiong.mendianfu.dao;

import com.xiong.mendianfu.bean.Dingdan;

import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2016/11/25.
 */
public interface DingDanDao {
    /**
     *查詢訂單,可以根據訂單號、門店標識、門店名模糊查詢
     *該功能需要帶翻頁
     *
     *
     */
    List queryDingdan(Map map);
    /**
     *根據企業信息查詢該企業的所有門店在一定時期內的微信收款金額
     *返回list<Map>類型的數據
     *每個map包含:企業id,企業名稱,收款金額
     *@param mingcheng 企業名稱,多個名稱中間使用逗號分隔,如果爲空則默認全部
     *@param fanwei 時間範圍,其值包括下面幾種
     *日消費/周消費/近一個月/近半年/近一年統
     *該值如果爲空則認爲是全部
     *
     */
    List queryDingdanByqiye(Map map);
    /**
     *按門店查詢收款統計,
     *@param qiyeid 企業id
     *@param mingcheng 門店名稱,多個門店名稱中間使用逗號分隔,若爲空則表示全部
     *
     */
    List queryDingdanBymendian(Map map);
    /**
     *根據企業的openid查詢該企業及其下屬門店的收款情況
     *@param openid 管理員openid
     *@param fanwei 查詢範圍,其值包括下面幾種
     *日消費/周消費/近一個月/近半年/近一年統
     *該值如果爲空則認爲是全部
     */
    List queryDingdanByqiyeAdminopenid(Map map);
    /**
     *
     *根據openid查詢門店的收款情況
     *@param openid 門店的openid
     *@param fanwei
     *其值包括下面幾種
     *日消費/周消費/近一個月/近半年/近一年統
     *該值如果爲空則認爲是全部
     */
    List queryDingdanBymendianAdmin(Map map);
    /**
     *根據訂單id查詢訂單明細
     */
    Dingdan queryDingdanByID(String dingdanid);

    Map<String,Object> getPageCount(Map map);
}

mybatis整合spring配置文件  這個配置可能不是最好的

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/aop
		 http://www.springframework.org/schema/aop/spring-aop.xsd
		 http://www.springframework.org/schema/tx
		 http://www.springframework.org/schema/tx/spring-tx.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
		
	<!-- 開啓註解 -->
	<context:annotation-config />
	<!-- 指定掃描包 -->
	<context:component-scan base-package="com.xiong.mendianfu.controllers" />
	<context:component-scan base-package="com.xiong.mendianfu.services.impl" />
	<!-- 開啓springmvc註解 -->
	<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>text/html;charset=UTF-8</value>
					</list>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>
	
	<!-- spring mybitis的配置 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="jdbc:mysql://localhost:3306/mendianfu?useUnicode=true&characterEncoding=utf-8"/>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
	<!-- mybatis的sessionFactoty -->
	<bean id="sqlSessionFactoryd" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="mapperLocations" value="classpath:QiYeDao.xml"></property>
	</bean>
	<bean id="qiYeDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface"  value="com.xiong.mendianfu.dao.QiYeDao"></property>
		<property name="sqlSessionFactory" ref="sqlSessionFactoryd" ></property>
	</bean>
	<bean id="dingdanService" class="com.xiong.mendianfu.services.impl.DingdanServiceImpl">
		<property name="dingDanDao" ref="dingDanDao"></property>
	</bean>
</beans>






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章