MyBatis 多参数综合查询的动态 SQL 实现示例

    List<QualityDataOfAppDto> findQualityDataOfAppDtoByDeptNoAndAoneProductId(
            @Param("deptNo") Long deptNo,
            @Param("aoneProductId") Long aoneProductId);
    <select id="findQualityDataOfAppDtoByDeptNoAndAoneProductId"
            resultType="com.alibaba.swork.info.common.dto.QualityDataOfAppDto">
        SELECT
        a.id id,
        a.gmt_create gmtCreate,
        a.gmt_modified gmtModified,
        a.app_id appId,
        a.app_name appName,
        a.dept_no deptNo,
        a.dept_name deptName,
        a.aone_product_id aoneProductId,
        a.aone_product_name aoneProductName,
        a.app_score appScore,
        a.line_count lineCount,
        a.complexity complexity,
        a.duplication duplication,
        a.comment_rate commentRate,
        a.ut_rate utRate,
        a.ui_rate uiRate,
        a.it_rate itRate,
        a.static_code_check_value1 staticCodeCheckValue1,
        a.static_code_check_value2 staticCodeCheckValue2,
        a.static_code_check_value3 staticCodeCheckValue3,
        a.static_code_check_value4 staticCodeCheckValue4,
        a.date_stamp dateStamp,
        a.deviation deviation,
        v.base_value appScoreBaseValue,
        b.app_score appScoreRelative,
        b.complexity complexityRelative,
        b.duplication duplicationRelative,
        b.comment_rate commentRateRelative,
        b.ut_rate utRateRelative,
        b.ui_rate uiRateRelative,
        b.it_rate itRateRelative,
        b.static_code_check_value1 staticCodeCheckValue1Relative,
        b.static_code_check_value2 staticCodeCheckValue2Relative,
        b.static_code_check_value3 staticCodeCheckValue3Relative
        FROM quality_data_of_app a
        LEFT JOIN quality_data_app_base_value v on a.app_id = v.app_id
        LEFT JOIN quality_data_of_app b ON a.app_id = b.app_id
        AND a.date_stamp =
        (SELECT max(date_stamp) FROM quality_data_of_app)
        AND b.date_stamp =
        (SELECT date_add(max(date_stamp), INTERVAL -1 DAY) FROM quality_data_of_app)
        WHERE a.date_stamp =
        (SELECT max(date_stamp) FROM quality_data_of_app)
        <if test='deptNo != null and deptNo != 0 '>
            AND a.dept_name LIKE
            (SELECT concat( (select dept_name FROM department WHERE dept_no = #{deptNo}),'%'))
        </if>
        <if test='aoneProductId != null and aoneProductId != 0 '>
            AND a.aone_product_id = #{aoneProductId}
        </if>
        ORDER BY lineCount desc
    </select>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏祥子的故事

mysql |那些关于第二大的事

348100
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

343110
来自专栏技术碎碎念

T-SQL 查询、修改数据表

T-SQL修改表数据 INSERT语句 语法: INSERT [TOP(expression) [PERCENT]] [INTO] ...

48040
来自专栏挖坑填坑

关于linq语句与sql语句查询条件==null处理的奇妙现象

8220
来自专栏james大数据架构

SQL常用数据库结构升级语句

修改视图 --SQL Server 2005 GO IF EXISTS (SELECT * FROM sys.views WHERE object_id ...

24390
来自专栏破晓之歌

数据库练习

11620
来自专栏跟着阿笨一起玩NET

sqlserver 存储过程中拼接sql语句 动态执行

1.7K10
来自专栏测试开发架构之路

分分钟搞懂union与union all

SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的...

36090
来自专栏个人随笔

MySQL高级查询

 高级查询     关键字书写顺序  关键字执行顺序 select:投影结果       1    5 from:定位到表             2   ...

82290
来自专栏MYSQL轻松学

mysql left join、right join、inner join用法分析

四种联接 left join(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中...

40670

扫码关注云+社区

领取腾讯云代金券