У меня есть аналогичный случай использования, потому что я хотел бы отформатировать мой SQL-запрос в строке. Например, вложенный запрос:
String query = '''
select ${CONTROL_ID} from ${TABLE_NAME}
where
location_id = (
select id from location where code = ${locationCode}
)
''';
Выглядит намного лучше в Groovy, чем версия Java с "..."+ TABLE_NAME +"..."
, поскольку я уверен, что вы можете согласиться.
Этот тип строки не работает с методом .stripIndent()
. Вместо этого я сохранил новые строки в query
(выше) для какой-либо цели. Обратите внимание на «\» в конце строки.
И, таким образом,
String query = """
select ${CONTROL_ID} from ${TABLE_NAME}
where
location_id = (
select id from location where code = '${locationCode}'
)
""".replaceAll( /\n\s*/, " " );
println " Query= ${query};";
Дайте аккуратно отформатированный однострочный результат SQL-запроса:
Query = select id from controls where location_id = ( select id from location where code = '003');
Который я считаю весьма полезным и более простым для чтения. Я заменяю одно пространство, чтобы убедиться, что SQL остается дискретным. Важная часть состоит в том, чтобы использовать новую строку (\n
) в качестве стартовой линии / якоря de facto . Отлично подходит для смешанных TAB-s и SPACE-s.
Конечно, это также работает и для оригинального вопроса.