Unicorn3에서 돌아가는 모든 쿼리는 /WEB-INF/conf/sql-def.xml 에 있으며,
모든 테이블 스키마는 /WEB-INF/conf/schema.xml 에 들어있습니다
SQL 추가설명
① sql-def.xml에 쿼리
추가
sql-def.xml에는 모두 두개(MYSQL과 ORACLE)의 데이터베이스 쿼리가 존재합니다
이 구분은 <database> 태그로 구분이 됩니다
만약 mysql이 설치되어 있다면 mysql의 <database> 태그 안에 쿼리들을 수정하거나 추가하셔야 하고,
oracle이 설치되어 있다면 oracle의 <database>태그 안에 있는 쿼리들을 수정하거나 추가할 수 있습니다
각 <database> 태그 안에 있는 쿼리태그들(select_user, create_user ..)은 데이터베이스 별로
유니크합니다
예를들어 <select_user_01> 태그안에 들어있는 쿼리는 mysql에 딱 한개, oracle에 딱 한개씩 존재한다는
말입니다
DAO에서 이 쿼리태그 키를 기준으로 쿼리하기 때문에 추가하고자 하는 데이터베이스안에 유니크하게 추가하세요
sql-def.xml 구조
② SqlStatement 수정
com.jakartaproject.database.sql.SqlStatement.java 를 수정하여야 합니다
setter로 이루어진 클래스로 추가하고자 하는 쿼리태그에 대한 setter를 만들면 됩니다
기존에 만들어져 있는 setter를 참고하여 생성하세요
③ QueryLoader 수정
com.jakartaproject.database.sql.QueryLoader.java 를 수정하여야 합니다
sql-def.xml에서 생성된 새로운 쿼리에 대한 태그를 Digest가 읽어들여야 하기 때문에 이부분도 추가가 필요합니다
digester.addBeanPropertySetter() 함수에 기존에 작성된 문장을 보시고 적절히 추가하시면 됩니다
④ 추가예제를 통해 알아봅시다
환경 : MYSQL
추가쿼리 : SELECT userNick FROM user_t WHERE userId = ?
-. sql-defs.xml 수정
user_t 테이블의 select문장은 21까지 있음으로 select_user_22로 쿼리태그를
구성한다
-. SqlStatement.java 수정
select_user_22 태그를 추가하였음으로 다음 setter를 SqlStatement.java에 추가
가능하면 setSelect_user_21() 함수 밑에 추가하도록 하자
-. QueryLoader.java 수정
select_user_22에대한 addBeanPropertySetter 추가!
-. 추가한 쿼리 사용
DAO 에서 다음과 같이 사용 가능합니다
UserVO 클래스에 해당 결과값을 저장해 줍니다