Не все переменные связаны Исключение Использование шаблона JDBC - PullRequest
0 голосов
/ 10 октября 2018

Я использую jbcTemplate, и я столкнулся с исключением ORA-01008.

package com.awzpact.prayas.service;

import com.awzpact.uam.dao.BaseJdbcTemplate;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.stereotype.Service;

/**
 *
 * @author zia.khan
 */
@Service
public class PayCodeDetailListService extends BaseJdbcTemplate {

    public List<Map<String, Object>> searchPayCodeByempCode(String tabSuffix, String empCode, String yyyyMm) {
        MapSqlParameterSource param = new MapSqlParameterSource();
        String tableName = "Salary_detail_report_082018";
        String query = "SELECT "
                + " DISTINCT PAY_CODE, "
                + " PAY_CODE_DESC, "
                + " AMOUNT, "
                + " row_number() over (Order by EMP_CODE ) AS ROW_NUM "
                + " FROM " + tableName
                + " WHERE EMP_CODE=:EMP_CODE "
                + " AND YYYYMM=:YYYYMM "
                + " AND PAY_CODE NOT IN (997,998,999) "
                + " ORDER BY PAY_CODE ASC ";
        param.addValue("empCode", empCode);
        param.addValue("YYYYMM", yyyyMm);
        List<Map<String, Object>> employees = queryForList(query);
        if (employees != null && !employees.isEmpty()) {
            for (Map<String, Object> employee : employees) {
                for (Iterator<Map.Entry<String, Object>> it = employee.entrySet().iterator(); it.hasNext();) {
                    Map.Entry<String, Object> entry = it.next();
                    String key = entry.getKey();
                    Object value = entry.getValue();
                    System.out.println(key + " = " + value);
                }
            }
        }
        return employees;
    }
}

Эта строка List<Map<String, Object>> employees = queryForList(query); выдает и исключение.

Кроме того, я также хочу знать, результатвозвращенный после выполнения запроса можно напрямую связать с POJO.

Простое значение, мой запрос будет возвращать ограниченное количество столбцов, например 10,13,15 50,90 и т. д.

Теперь яя не хочу реализовывать маппер, потому что есть 95 записей, и для ограниченных записей мне нужно написать большой маппер, и каждый раз мне также нужно проверять нулевые значения при отображении строки.

Я хочу напрямуюсвязать результат в домене.

, поэтому после НИОКР я нашел это решение, и во время тестирования я столкнулся с этим, пожалуйста, предложите мне лучшее решение.

1 Ответ

0 голосов
/ 10 октября 2018

В дополнение к ответу Тима я хочу добавить, что ваш код не помещает переменную param в запрос.Вы должны как-то вставить карту param в запрос.Если мы говорим о классе Spring JdbcTemplate, он имеет огромное количество различных методов, например, вы можете сделать что-то вроде:

jdbcTemplate.query(
    "select id from your_table_here where first_column = ? and second_column = ?",
    new Object[] {
        firstParameter, secondParameter
    },
    new int[] {
        VARCHAR, VARCHAR // types of parameters in same order
    },
    new SingleColumnRowMapper<>()   // here you can use your own mapper
);
...