⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 blog.csdn.net/congweijing/article/details/82499627 「congweijing」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

说明

最近一周都在写报表,样式很统一,上面是查询条件,下面是查询结果,页面如下图所示。由于要写很多报表,都是重复的工作,所以部门里的小哥哥在写了一个基于node的小程序,直接配置JSON文件,就可以生成报表模板,感觉很强(后面想学习一下)。

作为一个优秀的CV工程师(复制粘贴),我也没怎么写前端的工作,直接用生成的模板就好了,但是后台的查询我还是稍微走心的。由于JAVA基础不是很好,总结的可能出错,欢迎大家批评指正。

图片

一、controller、service、serviceImpl、Mapper、Xml等文件的作用

下图为java约定俗成的几个文件的作用

图片

二、在项目中的使用情况,由于业务逻辑很简单,所以每个文件中的代码行数都很少

controller.java

/**
* 资产rim项目信息报表
*
*/
@RequestMapping(value = "/hls/cus/rpt/rim/project/detail/query")
@ResponseBody
public ResponseData rptRimProjecrDetailQuery(@RequestBody Map map) {
return new ResponseData(hlsCusRptRimProjectDetailService.rptRimProjectDetailQuery(map));
}

service.java

public interface HlsCusRptRimProjectDetailService extends IBaseService<HlsCusRptRimProjectDetail>,ProxySelf<HlsCusRptRimProjectDetailService> {

List<Map> rptRimProjectDetailQuery(Map map);
}

serviceImpl.java

@Override
public List<Map> rptRimProjectDetailQuery(Map map) {
int page = Integer.parseInt(String.valueOf(map.get("page")));
int pageSize = Integer.parseInt(String.valueOf(map.get("pageSize")));
PageHelper.startPage(page,pageSize);
return hlsCusRptRimProjectDetailMapper.rptRimProjectDetailQuery(map);
}

mapper.java

public interface HlsCusRptRimProjectDetailMapper extends Mapper<HlsCusRptRimProjectDetail> {

List<Map> rptRimProjectDetailQuery( Map<String, Object> map);// 资产rim表项目信息报表

}

mapper.xml

<select id="rptRimProjectDetailQuery" resultMap="BaseResultMap">

SELECT
V.*,
(case when V.REMAIN_PRINCIPAL > 0 then (V.REMAIN_PRINCIPAL - nvl(
(SELECT SUM(CCC.DUE_AMOUNT)
FROM CON_CONTRACT_CASHFLOW CCC
WHERE CCC.CONTRACT_ID = V.CONTRACT_ID
AND CCC.CF_ITEM = 5)
,0)) else 0 end) as PROJECT_EXPOSURE
FROM (SELECT
--项目编号
CC.PROJECT_CONTRACT_NUMBER PROJECT_NUMBER,

-------------------------省略部分代码-------------------------

-- 项目核销申请日期
(SELECT CCT.TERMINATION_DATE
FROM CON_CONTRACT_TERMINATION CCT
WHERE CCT.CONTRACT_ID = CC.CONTRACT_ID) TERMINATION_DATE,
CC.BEFORE_RENT_FLAG
FROM CON_CONTRACT CC
LEFT JOIN PRJ_PROJECT PP
ON CC.PROJECT_ID = PP.PROJECT_ID
WHERE
cc.contract_status IN ('INCEPT', 'TERMINATE', 'ET')
OR (CC.contract_status = 'SIGN' AND cc.before_rent_flag = 'Y')
) V
----------------下面写查询条件----------------------
<where>
<if test="projectNumber !=null and projectNumber !=''">
and v.project_number like concat(concat('%',#{projectNumber}),'%')
</if>
<if test="businessType !=null and businessType.size() !=0">
and v.business_type in
<foreach item="item" index="index" collection="businessType" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>

</select>

文章目录
  1. 1. 说明
  2. 2. 一、controller、service、serviceImpl、Mapper、Xml等文件的作用
  3. 3. 二、在项目中的使用情况,由于业务逻辑很简单,所以每个文件中的代码行数都很少
    1. 3.0.1. controller.java
    2. 3.0.2. service.java
    3. 3.0.3. serviceImpl.java
    4. 3.0.4. mapper.java
    5. 3.0.5. mapper.xml