版权声明:本文为博主原创文章,未经博主允许不得转载。 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那张图里的查询结果