《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