Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Как правильно писать длинные строковые константы?

#java


Интересует случай многострочных констант при переносе со строки на строку. Собственно
сейчас делаю так
String query = "SELECT city" +
        "FROM cities " +
        "WHERE city='Moscow'";
    


Ответы

Ответ 1



раньше так делал: private static final String SELECT_DUMMY = "" + "SELECT * AS TITLE FROM DUAL" ; private static final String LIST_ACCOUNTS = "" + "SELECT * FROM ACCOUNTS" ; private static final String GET_USER_PREFERENCES = "" + "SELECT p.* " + "FROM USER_PREFERENCES up, USERS u" + "WHERE up.user_id = u.id" + "AND u.login_id = ?"; преимущество в том что запрос выглядит практически так же как и в IDE для СУБД (toad/sql developer), большую часть правок можно делать прямо в коде. минус же в том, что неудобно копировать запрос для редактирования в IDE (копируется в месте служебными символами языка для формирования строки), лечится выводом констант в sys out. p.s. раньше так делал сейчас широко используются ORM фреймворки, поэтому хардкод запросов в константах выглядит как минимум странновато

Ответ 2



Вообще "плюсовать" строки при помощи "+" если составных строк больше двух - не правильный подход. Почему можете почитать например тут. Попробуйте использовать для таких случаев class StringBuffer. Пример: String query = new StringBuffer() .append("SELECT city ") .append("FROM cities ") .append("WHERE city='Moscow'") .toString();

Ответ 3



Я лично пишу так: String sql = "" // + "select count(TASK_FOR_DATE_ID) " // + "from CO.TASK_FOR_DATE tfd " // + " join CO.TASK t on (tfd.TASK_ID=t.TASK_ID) " // + "where (tfd.START_TIME between ? and ?)"; Преимущество в том, что если использовать автоматическое форматирование кода, то строки не скачут туда-сюда.

Ответ 4



public static final String WHITE_SPACE = " ";

Комментариев нет:

Отправить комментарий