В Eclipse, как получить текст SQL, когда он в строке Java?
У меня очень длинный оператор SQL внутри строки Java. В eclipse, как я могу легко получить текст инструкции SQL без синтаксиса Java String? Я вручную удалял его, но в IntelliJ Idea можно получить текст без необходимости выполнять ручную работу по форматированию, чтобы удалить синтаксис Java String (например, символы "
и +
). У Eclipse есть аналогичная функция?
В качестве дополнительного бонуса я бы спросил, можно ли также получить строку с новыми строками, установленными на месте, поскольку она была отформатирована в среде IDE, даже если в самой строке не было символов \n
.
Ответы
Ответ 1
В зависимости от вашего клиента SQL он может иметь эту функцию.
Я знаю, что у TOAD есть эта функция встроенная. Я также помню, как Белка имела это.
Поэтому при вставке в SQL-редактор TOAD код автоматически извлекается из синтаксиса строки Java. Я помню, что он также работал с конструкциями типа StringBuffer/StringBuilder.
Смотрите: http://dev.toadformysql.com/webhelp/Content/Editor/Convert_SQL_Embedded_SQL.htm
Или вы можете создать простое регулярное выражение для вашего образца кода, например this jsfiddle.
Он работает с регулярным выражением для sql, например:
"select something \r\n" +
" from dual " +
"where 1 = 1\r\n";
jsfiddle должен выводить
select something
from dual
where 1=1
Тем не менее, он не красиво отформатирован (даже если тег <pre>
должен сохранять пробелы), но ваш SQL IDE должен помочь вам с этим, no?
Ответ 2
(мы используем Kepler)
-
Этот StringUtils
плагин выглядит неплохо: http://marketplace.eclipse.org/content/stringutils-plugin (нажмите скриншоты).
- не найден в диалоговом окне рынка Eclipse для установки
- загрузил главный ZIP из своего репозитория GIT, но не пошел в пользу решения 5.
-
Вместе с плагином Java Multi-Line String Editor
будет очень легко писать/читать/отлаживать такие заявления SQL: https://marketplace.eclipse.org/content/java-multi-line-string-editor
- не найден в диалоговом окне рынка Eclipse для установки
-
Еще одно приятное решение выглядит как Multiline
аннотация, где можно поддерживать строку в javadoc (которая будет преобразована в правильно отформатированную строку во время компиляции): https://github.com/benelog/multiline
-
вытеснение больших строк /SQL в отдельных файлах *.sql
(и чтение их, например, из пути к классам) было бы 2-м лучшим вариантом, если это уместно:
-
лучшим решением для нас было использование Groovy ( "Расширение Java-скриптов" ) вместе с нашим кодом Java:
- вам нужно установить плагин Groovy https://github.com/groovy/groovy-eclipse/wiki
- просто говоря
New -> Groovy Class
автоматически добавляет Groovy Nature в наш проект, и после этого вы можете реализовать свои SQL как константы или перечисления, подобные этому:
- поддерживает почти все (даже между барьерами Java- Groovy), поддерживаемые Java (редакторами):
- выделение кода
- рефакторинг (переименование), но только из Groovy файла
- автозавершения /
CTRL+rightclick
-Навигационные
- Javadoc намекает
src/my/pkg/SQLs.groovy
:
package my.pkg
class SQLs {
/** comment X */
static final String SEL_X = ```
select
bla,
foo
from
bar
where
x in (1,2,3)
```
}
src/my/pkg/SqlExec.java
:
// ...
stmt.executeQuery( SQLs.getSEL_X() ) ; /* Groovy auto-created this getSEL_X()
interface method transparently/auto-
suggested, but the "comment X" is not
hinted */
и более подходящим для нашего случая использования было использование SQL в качестве перечисления:
enum SQLs {
/** comment X */
SEL_X(```
select
...
x in (1,2,3)
```)
String sql
SQLs( String sql ) { this.sql = sql }
}
к которому можно получить доступ в src/my/pkg/SqlExec.java
, как это:
// the JavaDoc comment "comment X" works and the getSql() is transparently
// auto-generated by Groovy
stmt.executeQuery( SQLs.SEL_X.getSql() ) ;
И больше сахара с отладкой всего в Eclipse с DTP: -)
= > поэтому отладка этих SQL файлов будет такой же простой, как:
-
SQLs.groovy
file = > Открыть с помощью... = > Другое = > Редактор SQL (из очень приятного Eclipse Data Tools Platform (DTP) plugin
: https://eclipse.org/datatools/)
- вы всегда можете переключаться между редакторами по своему усмотрению (Eclipse запоминает последний используемый для каждого файла)
-
выбор правильного подключения для этого файла из пользовательских предварительно настроенных подключений db (должен быть открыт/подключен, если он еще не сделан)
-
маркировка для отладки SQL + ALT+X
-
результаты отладки запроса в виде вкладок или текстовых результатов...