SQL —— java写出结果集为一对多关系的sql

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/han_xiaoxue/article/details/84880665

一、结果集展示—摸清需求,搞清楚最终结果

很明显,我们要的结果是一对多的结果,如何使用一条sql查出来呢
controller返回json 本文最后写
在这里插入图片描述

二、设计实体类—用于封装sql返回结果

在这里插入图片描述
在这里插入图片描述

三、书写SQL

图片展示说明

在这里插入图片描述

具体sql代码分析

此处不采取常规的sql查询方式,而是将返回结果在resultMap中,进行一对多拆分
collection 中用于存放我们想要的“一对多”中的“多”。也就是我们实体类中的List<> result

mapper.xml

<mapper namespace="picc.web.enterpriseinquiries.dao.DwPolicyInfoDao">
    <resultMap id="dw_policy_info" type="picc.web.enterpriseinquiries.entity.DwPolicyInfo2" >
        <result column="uw_end_date" property="uwEndDate" jdbcType="VARCHAR" />
        <result column="total_premium" property="totalPremium" jdbcType="VARCHAR" />
        <result column="rec_premium" property="recPremium" jdbcType="VARCHAR" />
    </resultMap>
    <resultMap id="codeResultMap" type="picc.web.enterpriseinquiries.entity.Code" >
        <result column="organizeCode" property="organizeCode" jdbcType="VARCHAR" />
        <result column="comCode" property="comCode" jdbcType="VARCHAR" />
    </resultMap>
    <!--近5年签单保费和应收保费分布情况-->
    <select id="GetTotalRecPremiumCase" resultMap="resultMap" parameterType="picc.web.enterpriseinquiries.entity.Code">
        select DISTINCT (riskcode) as riskcode,organize_code as organizeCode,make_com as comCode,order_no
        from  dw_policy_info
        where  uw_end_date >=  year(current) - 4
        and organize_code =  #{organizeCode}
        <if test="comCode!= null and  comCode!=''" >
            and make_com = #{comCode}
        </if>
        group by uw_end_date,riskcode,organize_code,make_com
    </select>
    <resultMap id="resultMap" type="picc.web.enterpriseinquiries.entity.DwPolicy" extends="codeResultMap">
        <result column="riskCode" property="riskCode" jdbcType="VARCHAR" />
        <result column="organizeCode" property="organizeCode" jdbcType="VARCHAR" />
        <result column="comCode" property="comCode" jdbcType="VARCHAR" />
        <collection property="value" ofType="picc.web.enterpriseinquiries.entity.DwPolicyInfo2" column="{organizeCode=organizeCode,riskCode=riskCode, comCode=comCode}" select="getDwPolicy"></collection>  <!--传多个参数-->
					
		
		
    </resultMap>
    <select id="getDwPolicy" resultType="picc.web.enterpriseinquiries.entity.DwPolicyInfo2" parameterType="java.util.Map">
        select  uw_end_date as uwEndDate,
        nvl(round(sum(total_premium) *0.0001,2),0)  totalPremium ,
        nvl(round(sum(rec_premium)*0.0001,2),0)   recPremium
                from  dw_policy_info
                where  uw_end_date >=  year(current) - 4
                and organize_code = #{organizeCode}
                and riskcode=#{riskCode}
                <if test="comCode!= null and  comCode!=''" >
                    and make_com = #{comCode}
                </if>
                group by uw_end_date
    </select>
   
</mapper>

四、Controller

返回json类型的结果给页面,此处用了JSONObject.toJSONString()
引入jar包

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>
@RequestMapping("/GetTotalRecPremiumCase")
    @ResponseBody
    public String GetTotalRecPremiumCase(HttpServletRequest request){
        HeadResponse hr = new HeadResponse();
        hr.setMessage("查询失败!");
        hr.setStatus("500");
        List<DwPolicyInfo2> list = new ArrayList<>();
        Code code = new Code();
        try {
            code = PassParamtersUtil.GetCode(request,dwPolicyInfoService);
            String organizeCode = code.getOrganizeCode();
            String comCode = code.getComCode();
            Code code2 = new Code();
            code2.setOrganizeCode(organizeCode);
            code2.setComCode(comCode);
            list = dwPolicyInfoService.GetTotalRecPremiumCase(code2);
            hr.setMessage("查询成功!");
            hr.setStatus("200");
            hr.setResult(list);
            return JSONObject.toJSONString(hr);
        }catch (Exception e){
            System.out.println("e:"+e);
            return JSONObject.toJSONString(hr);
        }
    }

返回结果展示

在这里插入图片描述
这里的 1 2 3 4等数字 对应sql那张图里的查询结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/han_xiaoxue/article/details/84880665
SQL