반응형

전체 글 50

공통클래스 - ObjectUtils

오브젝트에 대한 공통클래스이다. 이 클래스의 목적은 추후 스프링 시큐리티 적용하면 was기동할때부터 실행되는 쿼리가 있는데, 이 쿼리들은 모두 이 클래스를 거쳐가게 된다. 또한 객체가 null인지 아닌지 확인하는 함수도 있는데, 이 함수는 서비스쪽 클래스 작성시 nullpointexception을 예방할 목적에서 쓸 수 있겠다. public class ObjectUtils { private static final Logger logger = LoggerFactory.getLogger(ObjectUtils.class); private ObjectUtils() { } /** * 클래스명으로 객체를 로딩한다. * @param className * @return * @throws ClassNotFoundExce..

공통클래스 - MariaUsTypeHandler

이 MariaUsTypeHandler클래스는 mybatis연동 config.xml에서 불러오는 공통클래스이다. 이 클래스의 목적은 실행쿼리 파라미터를 인코딩하여 로그파일에 쌓는데 목적이 있다. public class MariaUsTypeHandler implements TypeHandler { private final Logger logger = LoggerFactory.getLogger(MariaUsTypeHandler.class); public Object getResult(ResultSet rs, String s) throws SQLException { String result = rs.getString(s) == null ? "" : rs.getString(s) ; try { result = ne..

mybatis연동 config.xml

mybatis연동시 로딩하는 config파일을 작성한다. 1. 매퍼 설정 이 설정들은 마이바티스 옵션이다. 마이바티스 홈페이지에 이 모든 옵션들이 친절히 설명되어있다(!!) http://www.mybatis.org/mybatis-3/ko/configuration.html 이 속성들은 디폴트가 아닌경우만 명시하여 value값을 바꾸면 된다. 2. 패키지, 핸들러 명시 적용할 패키지와 핸들러를 명시했다. MariaUsTypeHandler클래스는 TypeHandler를 구현하여 다음글에 작성할것이다.

file-query.xml

첨부파일에 해당하는 모든 쿼리를 여기에 모아놓는다. 첨부파일은 공통기능으로 만든다. 첨부파일 외의 공통기능은 이런식으로 정의하면 되겠다. ANDA.DEL_YN = #{delYn} AND B.TMP_YN = #{tempYn} SELECT IFNULL(MAX(ATCH_FILE_ID), 0)+1 FROM YE_ATCH_FILE SELECT A.ATCH_FILE_ID atchFileId , A.FILE_DTL , A.USE_YN useYn , A.REG_DATE regDate , A.TMP_YN tempYn FROM YE_ATCH_FILE A SELECT A.ATCH_FILE_ID atchFileId , A.TMP_YN tempYn , B.FILE_SEQ fileSeq , B.ORGIN_FILE_NM orgin..

cache-query.xml

캐시로 불러올 쿼리를 작성한다. 캐시는 특성상 변동이 많이 없는 gnb메뉴나 코드 관리 ( 테이블을 하나로 단순 코드만 관리하기 위함 )에 사용하기 적절하다. 변동 폭이 크지않기 때문이다. SELECT MENU_CD menuCd ,PARN_CD parnCd ,MENU_NM menuNm ,LINK_ADDR linkAddr ,LINK_TYP linkTyp ,USE_YN useYn ,DEL_YN delYn ,MOD_DATE modDate ,REG_DATE regDate ,ORDER_SEQC orderSeq ,DTL_DESCdtlDesc FROM YE_MENU_MGR WHERE MENU_CD = #{menuCd} 쿼리 작성시 참고할 점은 부등호가 쿼리내에 존재하다면 를 사용하는게 좋다는 것이다. cdata를 사..

공통클래스 - CommonDAO / CommonDAOImpl

공통 CommonDao를 작성한다. 이 클래스의 기능은 db에서 insert, update, delete java단에서 구현할 수 있도록 인터페이스로 구현한다. 또한 mybatis와의 연동도 가능하게 할 것이다. 1. CommonDAO public interface CommonDAO { public void setSqlSessionTemplate(SqlSessionTemplate template); public Object insert(String queryId, Object parameterObject); public int update(String queryId, Object parameterObject); public int delete(String queryId, Object parameterOb..

[mysql/mariadb] 계층쿼리 RECURSIVE로 구현

앞서 계층쿼리를 함수로 만들어놓고 호출하는 방법 말고도 쿼리 자체를 재귀로 만들수 있다. WITH RECURSIVE MENU_MGR AS // MENU_MGR 이름을 가진 함수이다. ( SELECT MENU_CD menuCd //코드 정보 , PARN_CD parnCode //부모 코드 , MENU_NM menuNm //코드이름 ,ORDER_SEQC orderSeq //정렬번호 (int형) , 1 lvl // 레벨 FROM YE_MENU_MGR AS MMGR WHERE MENU_CD = 'ROOT' // ROOT부터 시작해서 자식들이 나오게 한다. UNION ALL SELECT MMGR.MENU_CD menuCd , MMGR.PARN_CD parnCode , MMGR.MENU_NM menuNm ,ORDE..

데이터베이스 2019.05.27

[mysql/mariadb] 계층쿼리 함수생성 및 호출로 구현

계층쿼리를 만드는 방법은 함수로 구현하는 방법과 그냥 생쿼리로 짜는 방법이 있다. 그 중 함수로 구현하는 방법을 정리했다. 함수도 int파라미터로 받는 방법과 varchar로 받는 방법이 있는데 두 방법이 큰 차이가 있지는 않다. 1. varchar파라미터로 받는 방법 DROP FUNCTION IF EXISTS GET_DEPT_TREE; DELIMITER $$ CREATE FUNCTION GET_DEPT_TREE(value VARCHAR(50)) RETURNS VARCHAR(50) //파라미터, 리턴타입 맞춰준다. NOT DETERMINISTIC READS SQL DATA BEGIN DECLARE _menuCd VARCHAR(50); //함수내 변수 메뉴코드 DECLARE _parnCd VARCHAR(5..

데이터베이스 2019.05.23

톰캣오류 - At least one JAR was scanned for TLDs yet contained no TLDs.

로깅관련 클래스를 추가하고 톰캣을 돌렸더니 다음과 같은 에러가 나왔다. At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 왜인지는 모르겠어 구글 번역을 돌려보니 TLD파일을 스캔할 수 없다는 내용이다. rt.jar파일 스캔을 제외하는 방법으로 해결했다. 참고 : https://javac..

반응형