带参方法的执行:普通方法的查询,可为空方法的查询。批量处理SQL语句。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带参方法的执行:普通方法的查询,可为空方法的查询。批量处理SQL语句。相关的知识,希望对你有一定的参考价值。

普通方法的查询:

@Override
    public List<Map<String, Object>> selectSpentAmount(Integer MAT_TYPE_, String DEPT_CODE_, Integer YEAR_, Map<String, Object> operator) {
        String sql = "select MAT_NO_, sum(AMOUNT_) as SPENT_AMOUNT_ from DM_MAT_MONTH_PLAN where MAT_TYPE_ = ? and DEPT_CODE_ = ? and YEAR_ = ? and PROCESS_STATUS_ in (1, 2) group by MAT_NO_";
        return dmJdbcTemplate.queryForList(sql, MAT_TYPE_, DEPT_CODE_, YEAR_);
    }

可为空方法的查询:

@Override
    public List<Map<String, Object>> selectSpentBudget(Integer MAT_TYPE_, String DEPT_CODE_, Integer YEAR_, Integer MONTH_, String MAT_BUDGET_CAT_ID_, List<Integer> PROCESS_STATUS_LIST, Map<String, Object> operator) {
        String sql = "select MAT_NO_, sum(PLANNED_PRICE_ * AMOUNT_) as SPENT_BUDGET_ from DM_MAT_MONTH_PLAN where 1 = 1";
        Map<String, Object> paramMap = new HashMap<String, Object>();

        if (MAT_TYPE_ != null) {
            sql += " and MAT_TYPE_ = :MAT_TYPE_";
            paramMap.put("MAT_TYPE_", MAT_TYPE_);
        }

        if (StringUtils.isNotEmpty(DEPT_CODE_)) {
            sql += " and DEPT_CODE_ = :DEPT_CODE_";
            paramMap.put("DEPT_CODE_", DEPT_CODE_);
        }

        if (YEAR_ != null) {
            sql += " and YEAR_ = :YEAR_";
            paramMap.put("YEAR_", YEAR_);
        }

        if (MONTH_ != null) {
            sql += " and MONTH_ = :MONTH_";
            paramMap.put("MONTH_", MONTH_);
        }

        if (StringUtils.isNotEmpty(MAT_BUDGET_CAT_ID_)) {
            sql += " and MAT_BUDGET_CAT_ID_ = :MAT_BUDGET_CAT_ID_";
            paramMap.put("MAT_BUDGET_CAT_ID_", MAT_BUDGET_CAT_ID_);
        }

        if (PROCESS_STATUS_LIST != null && PROCESS_STATUS_LIST.size() > 0) {
            sql += " and PROCESS_STATUS_ in (:PROCESS_STATUS_LIST)";
            paramMap.put("PROCESS_STATUS_LIST", PROCESS_STATUS_LIST);
        }
        sql += " group by MAT_NO_";
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dmJdbcTemplate);
        return namedParameterJdbcTemplate.queryForList(sql, paramMap);
    }

批量处理SQL语句:

@Override
    public int updateStatus(final List<String> MAT_AUX_PLAN_REC_ID_LIST, final Map<String, Object> operator) {
        if (MAT_AUX_PLAN_REC_ID_LIST == null || MAT_AUX_PLAN_REC_ID_LIST.size() == 0) {
            return 0;
        }

        String sql = "update DM_MAT_AUX_PLAN_REC set STATUS_ = 1 where MAT_AUX_PLAN_REC_ID_ = ? and STATUS_ = 0";

        BatchPreparedStatementSetter batch = new BatchPreparedStatementSetter() {
            public void setValues(PreparedStatement ps, int i) throws SQLException {
                ps.setString(1, MAT_AUX_PLAN_REC_ID_LIST.get(i));
            }

            public int getBatchSize() {
                return MAT_AUX_PLAN_REC_ID_LIST.size();
            }
        };
        return dmJdbcTemplate.batchUpdate(sql, batch).length;
    }

 

以上是关于带参方法的执行:普通方法的查询,可为空方法的查询。批量处理SQL语句。的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server查询指定表格字段类型长度是否可为空等等信息

在oracle中创建带参存储过程,传进去的参数可以为空么?在存储过程中要如何判断传进来的值是不是为空。

oracle只显示不为空的列

qt sql多重条件查询简便方法

总和可为空的 Linq 查询

将列更改为可为空的查询不起作用[重复]