Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Требуется помощь по Spring + Oracle / 5 сообщений из 5, страница 1 из 1
13.09.2016, 10:40
    #39308197
misha1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется помощь по Spring + Oracle
Добрый день.
Есть mvc-система - данные загружаются из оракловой таблицы через сервис - контроллер в velocity-страницу.
Персистентный класс:
Код: java
1.
2.
3.
4.
5.
@RowMapperClass
public class XmlMonitor {
       @RowMapperField(columnName = "xml_dload")
    private Date dload;
  геттеры.сеттеры


Сервис, возвращающию список объектов XmlMonitor:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
@Repository("xmlMoniorRepositoryImpl")
public class XmlMoniorRepositoryImpl implements XmlMoniorRepository {

    @Autowired
    private RowMapperService rowMapperService;

    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
    private static final Logger logger = Logger.getLogger(XmlMoniorRepositoryImpl.class);
    private SimpleJdbcInsert simpleJdbcInsert;

    @Override
    @Autowired
    @Qualifier("dataSource")
    public void setDataSource(DataSource dataSource) {
        this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
        this.simpleJdbcInsert = new SimpleJdbcInsert(dataSource).withTableName("XML_MONITOR");

    }
....
    @Override
    public List<XmlMonitor> findWithConditions(String type, String name, String numcde, String numwbil, String sender, String receiver,
                                               String ddateFrom, String ddateTo) {
.......
        String sql = "select * from XML_MONITOR " +
                " WHERE 1 = 1 " +
                typeClause +
                nameClause +
                numcdeClause +
                numwbilClause +
                senderClause +
                receiverClause +
                ddateFromClause +
                ddateToClause;
        List<XmlMonitor> result = namedParameterJdbcTemplate.query(sql, params, rowMapperService.getRowMapper(XmlMonitor.class));
        logger.info("selected from XML_MONITOR with conditions ("+result.size()+")");
        return result;
    }



Контроллер:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
@Controller
public class MonitoringController {

    private XmlMonitorService xmlMonitorService;

    @Autowired
    public MonitoringController(XmlMonitorService xmlMonitorService) {
        this.xmlMonitorService = xmlMonitorService;
    }
.....
    @RequestMapping(path="/xmlMonitor/loadData", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    @Secured({"ROLE_14W","ROLE_14R"})
    public Collection<XmlMonitor> loadXmlMonitorData(@RequestParam Map<String, String> params) {
        String type = params.get("type");
        String name = params.get("name");
        String numcde = params.get("numcde");
        String numwbil = params.get("numwbil");
        String sender = params.get("sender");
        String receiver = params.get("receiver");
        String ddateFrom = params.get("ddateFrom");
        String ddateTo = params.get("ddateTo");
        return  xmlMonitorService.findWithConditions(type, name, numcde, numwbil, sender, receiver, ddateFrom, ddateTo);
    }



JavaScript с веб-страницы:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
.....
                    var dload = "";
                    if (entry.dload != null ){
                        dt = $.datepicker.parseDate('yy-mm-dd', entry.dload);
                        dload = $.datepicker.formatDate('dd.mm.yy', dt);

                    }
.......


Поле dload берется из поля типа date таблицы XML_MONITOR.
Сейчас оно возвращает значение в формате yy-mm-dd. Т.е. в нем нет времени, только дата.
Причем без всякого форматирования, видимо, формат даты берется из настроек JDBC.
Возникло требование возвращать поле dload в формате с часами и минутами.
Первое, что пришло в голову - to_char в запросе, но в контроллере также есть также методы обновления и удаления данных из таблицы, боюсь, как бы чего не накрылось. Также пробовал добавить поле с to_char в запрос дополнительно, получил NPE от Rowmapper...
Скорее всего, делаю что-то не так.
Посоветуйте, как лучше вытащить часы и минуты в страничку?
Еще раз повторюсь - сейчас дата по умолчанию приходит из контроллера без часов и минут.
...
Рейтинг: 0 / 0
13.09.2016, 11:04
    #39308212
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется помощь по Spring + Oracle
misha1973Еще раз повторюсь - сейчас дата по умолчанию приходит из контроллера без часов и минут.
а должна быть полная и в VIEW форматировать.
...
Рейтинг: 0 / 0
13.09.2016, 11:14
    #39308225
misha1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется помощь по Spring + Oracle
Petro123, дело в том, что есть также методы, обновляющие это поле. Если будет приходить полная дата, то надо будет везде прописывать форматирование, а так все вкрячивается по маске по умолчанию.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    @Override
    public void updateXmlMonitorStatuses(XmlMonitor mon){

        String sql = "update xml_monitor set xml_status = :status, xml_dmod = :dmod, xml_dload = :dload, xml_dprc = :dprc, xml_utimod = :uti where xml_name = :name";
        Map<String, Object> map = new HashMap<>();
        map.put("status", mon.getStatus());
        map.put("dmod", mon.getDmod());
        map.put("dload", mon.getDload());
        map.put("dprc", mon.getDprc());
        map.put("uti", mon.getUtimod());
        map.put("name", mon.getName());
        namedParameterJdbcTemplate.update(sql, map);
        logger.debug("Update XMLMonitor:" + mon);
    }
...
Рейтинг: 0 / 0
13.09.2016, 11:25
    #39308240
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется помощь по Spring + Oracle
misha1973Если будет приходить полная дата, то надо будет везде прописывать форматирование
не очень понял проблему.
mon.getDload()
- можно перегрузить
- можно использовать параметр DEFAULT
- можно добавить дополнительные методы геттеры и сеттеры
- можно огрублять без минут при сохранении в базу.
Приводите больше кода.
Если у вас на клиенте НЕ было минут, то их надо будет сохранять с клиента или автоматом лог какой нибудь?
...
Рейтинг: 0 / 0
13.09.2016, 12:47
    #39308347
myaucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется помощь по Spring + Oracle
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    mon.dload = getDate(rs.getTimestamp("dload"));

    ...

    // преобразовать java.sql.Timestamp в java.util.Date
    public static java.util.Date getDate(Timestamp timestamp) {
        return timestamp != null ? new java.util.Date(timestamp.getTime()) : null;
    }
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Требуется помощь по Spring + Oracle / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]