플젝 들어가서 처음 mapper 생성시 사용할만한 쿼리
1. 테이블에 코맨트 가져와서 셀렉트 시 주석 다는 쿼리
WITH columns AS (
SELECT
ps.schemaname,
ps.relname,
pa.attname AS column_name,
COALESCE(pd.description, 'No Comment') AS column_comment,
pa.attnum,
MAX(pa.attnum) OVER () AS max_attnum
FROM pg_stat_all_tables ps
JOIN pg_attribute pa ON ps.relid = pa.attrelid
LEFT JOIN pg_description pd ON pd.objoid = pa.attrelid AND pd.objsubid = pa.attnum
WHERE ps.schemaname = 'TEST' -- 스키마명 입력
AND ps.relname = 'TEST' -- 테이블명 입력
AND pa.attnum > 0
AND NOT pa.attisdropped
ORDER BY pa.attnum
)
SELECT
'SELECT' || E' \n\t' || -- SELECT 바로 뒤에 줄 바꿈과 탭 추가 (들여쓰기)
STRING_AGG(
CASE
WHEN attnum = max_attnum THEN
-- 마지막 컬럼은 쉼표 없음
column_name || ' /* ' || column_comment || ' */'
ELSE
-- 마지막이 아닌 컬럼은 쉼표와 주석 뒤에 줄 바꿈 및 들여쓰기
column_name || E' ,\t/* ' || column_comment || ' */' || E'\n\t'
END,
'' -- 각 항목 사이에 별도의 구분자 없이 CASE 문 안에서 처리
) || E'\n' || -- 모든 컬럼 뒤에 줄 바꿈 (FROM 앞에)
'FROM ' || schemaname || '.' || relname || ';' AS query
FROM columns
GROUP BY schemaname, relname;
2. 조건 자동으로 생성해주는 쿼리(in)
SELECT
STRING_AGG(
'<if test ="'
|| substr( replace( initcap( '1' || pa.attname), '_', '' ), 2) || 'List != null and ' || substr( replace( initcap( '1' || pa.attname), '_', '' ), 2) || E'List.size > 0">\n'
|| E'\t'
|| 'AND th.' --약어
|| pa.attname || E' IN\n'
|| E'\t<foreach collection="' || substr( replace( initcap( '1' || pa.attname), '_', '' ), 2) || 'List' || E'" item="item" open="(" close=")" separator=",">\n'
|| E'\t\t#{item}\n'
|| E'\t</foreach>\n'
|| E'</if>\n'
, ''
) as "mybatisWhere"
FROM pg_stat_all_tables ps
JOIN pg_attribute pa ON ps.relid = pa.attrelid
LEFT JOIN pg_description pd ON pd.objoid = pa.attrelid AND pd.objsubid = pa.attnum
WHERE ps.schemaname = 'test'
AND ps.relname = 'test' -- 테이블명 입력
AND pa.attnum > 0
AND NOT pa.attisdropped
;
3. 조건 자동으로 생성해주는 쿼리(eq ( like로변경가능))
SELECT
STRING_AGG(
'<when test="srchKwTp == '''
|| substr( replace( initcap( '1' || pa.attname), '_', '' ), 2)
|| E'''">\n'
|| E'\t'
|| 'tb.' --약어
|| pa.attname
|| E'= #{srchKw}\n'
|| E'</when>\n'
, ''
) as "mybatisWhere"
FROM pg_stat_all_tables ps
JOIN pg_attribute pa ON ps.relid = pa.attrelid
LEFT JOIN pg_description pd ON pd.objoid = pa.attrelid AND pd.objsubid = pa.attnum
WHERE ps.schemaname = 'TEST'
AND ps.relname = 'TEST' -- 테이블명 입력
AND pa.attnum > 0
AND NOT pa.attisdropped
;
4. 슬로우 쿼리 검색
-- 오래 실행 중인 쿼리 (예: 5초 이상)
SELECT
pid,
datname AS database,
usename AS user,
client_addr,
state, -- active / idle in transaction 등
wait_event_type,
wait_event,
current_timestamp - query_start AS runtime, -- 실행 시간
query_start,
query -- 실제 실행 쿼리
FROM pg_stat_activity
WHERE state = 'active'
AND current_timestamp - query_start > interval '5 seconds' -- 원하는 시간으로 조정
ORDER BY runtime DESC;getJobParameters
public static JobParameters getJobParameters(Map<String, Object> jobDataMap) {
String key;
Object value;
JobParametersBuilder builder = new JobParametersBuilder();
if (jobDataMap != null) {
for (Entry<String, Object> entry : jobDataMap.entrySet()) {
key = entry.getKey();
value = entry.getValue();
if (value instanceof String) {
builder.addString(key, (String) value);
}
else if (value instanceof Float || value instanceof Double) {
builder.addDouble(key, ((Number) value).doubleValue());
}
else if (value instanceof Integer || value instanceof Long) {
builder.addLong(key, ((Number) value).longValue());
}
else if (value instanceof Date) {
builder.addDate(key, (Date) value);
}
else {
if (LOG.isDebugEnabled()) {
LOG.debug("JobDataMap contains values which are not job parameters (ignoring).");
}
}
}
}
return builder.toJobParameters();
}
https://coding-factory.tistory.com/461
[Oracle] 오라클 계층형 쿼리(START WITH.. CONNECT BY)
계층형 쿼리란? 계층형 구조는 상하 수직관계의 트리형태의 구조로 이루어진 형태를 말합니다. 예를 들자면 특정회사의 부서, 특정학교의 학과등이 있습니다. 계층형 쿼리는 테이블에 저장된
coding-factory.tistory.com
자바스크립트
자바스크립트 data-[] -배열식으,로 자바스크립트에서 쓸수있는듯.,.?
예 ) data-cont ='1' , data-temp='2'
${....}.data('cont'); = 1
${....}.data('temp'); = 2
'JAVA' 카테고리의 다른 글
| JPA 공부 (0) | 2020.12.10 |
|---|---|
| jsp 에서 c 문법 사용하기 (0) | 2017.07.31 |
| [스프링 게시판 만들기.2] 오라클 연동 DBCP 이용 방법 (0) | 2017.07.31 |
| Spring WEB 한글깨짐 수정방법 (0) | 2017.07.25 |
| 스프링 기초.1 (0) | 2017.06.19 |
