반응형

1. 컬럼 추가
ALTER TABLE 테이블명 ADD (컬럼명 데이터 타입 DEFAULT '디폴트값옵션' NOT NULL,
                                          컬럼명 데이터 타입 DEFAULT '디폴트값옵션' NOT NULL)

예제) ALTER TABLE TEST_TABLE ADD TEST_COLUMN VARCHAR2(15) DEFAULT 'TEST' NOT NULL


2. 외래키 추가
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 FOREIGN KEY (컬럼명) REFERENCES 외래키맺을테이블명(외래키맺을컬럼명);

예제) ALTER TABLE PLAYER ADD CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);



3. 코맨트 추가
COMMENT ON COLUMN 테이블명.컬럼명 IS '코맨트';

예제) COMMENT ON COLUMN TEST_TABLE.TEST_COLUMN IS '테스트컬럼';

반응형
반응형

임시 테이블 만들기

A, B, C, D ...가 포함된 값을 where 조건 IN절에 넣을때 1000개 씩 밖에 조회가 되지 않는다.
1000개 이상의 값을 넣기 위해 아래와 같이 임시로 테이블을 만들거나
실제 테이블을 create 하는게 더 효율적일수 있다.


WITH TEST AS (
        SELECT 'A' AS GBN FROM DUAL UNION ALL
        SELECT 'B' AS GBN FROM DUAL UNION ALL
        SELECT 'C' AS GBN FROM DUAL UNION ALL
        SELECT 'D' AS GBN FROM DUAL UNION ALL
        SELECT 'E' AS GBN FROM DUAL UNION ALL
        SELECT 'F' AS GBN FROM DUAL UNION ALL
        SELECT 'G' AS GBN FROM DUAL
)
SELECT * FROM  TEST;


[WITH 구문]
- WITH구문내의 쿼리의 결과(SUB쿼리)가 여러번 사용될때(호출될때) 유용하다.
- 서브쿼리 블럭에 이름을 지정할 수 있도록 해줌.
- 오라클 옵티마이저는 쿼리를 인라인뷰나 임시 테이블로 여긴다.
- Oracle 9 이상 지원

반응형
반응형

에러 메시지 :
org.springframework.beans.factory.NoSuchBeanDefinitionException:  No bean named 'XxxxxService' is defined 

원인 : Service 객체를 찾지 못하는 에러
1) Resource명과 Service명 불일치 or 어노테이션 정의 안됨
2) resource폴더가 deploy되지 않음
3) dispatcher-servlet.xml 설정 
4) 메이븐빌드 오류

해결 방법
1) XxxxImpl. java의 @Service("XxxxService")와 
XxxxController.java의 @Resource(name="XxxxService") 확인 (대소문자 구분)

2) 프로젝트 > Properties > Deployment Assembly 선택
Bold 표시 항목 추가
     Source                    |     Deploy Path
    /src/main/java               WEB-INF/classes
    /src/main/resource         WEB-INF/classes
    /src/main/webapp          /

3) context-common.xml 파일 확인
<context:component-scan base-package="egovframework">
  <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
  <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
 </context:component-scan> 
base-package는 내 패키지에 맞춰주고, Service와 Repository관련 annotation을 include

4) 프로젝트 clean, 메이븐 clean 
메이븐 빌드할때 goal에 "clean install war:inplace"

※ 평상시에 잘됐는데 갑자기 생기는 오류 일경우 4)일 가능성이 높음



반응형
반응형

에러 메시지 : 
 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for  xxxMapper


원인 :  Mapper XML에서 해당 쿼리를 찾지 못하는 현상 (Mapper XML을 찾지 못하는 문제)

1. mapper id가 다를경우
   - mapper파일(MyBatis의 쿼리문을 등록한 XML파일)에 <select id=''.. 에 id와 
     mapper파일에 직접 접근하는 java파일(DAO나 service)에 적어놓은 id값이 다른 경우 

2. Parameter와 bean의 필드명이 틀린 경우

3. mapper파일(MyBatis의 쿼리문을 등록한 XML파일)에 정의된 네임스페이스(namespace)와 
   mapper파일에 직접 접근하는 java파일(DAO나 service)에서 호출하는 네임스페이스(namespace)가 다를 경우

4. MyBatis config파일에 mapper가 정의가 되어 있지 않거나 Spelling이 틀린 경우

5. mapper에 정의된 namespace 명칭이 같은 Application 내에 중복 될 경우

6. bulid가 안된경우


반응형
반응형

에러 메시지 :  
java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: org.apache.catalina.connector.RequestFacade@****
  
원인 :   
요청 할때 MultipartHttpServletRequest 요청이 아니기 때문에 발생 .

해결 :
- submit하는 form enctype multipart/form-data 인지 확인.
- controller에서 MultipartHttpServletRequest를 HttpServletRequest로 받아서 처리





반응형
반응형

에러메세지 : 
    Caused by: java.sql.SQLException: ORA-31011: XML 구문 분석을 실패함
    ORA-19202: XML 처리
    LPX-00217: 부적합한 문자 15573181(U+EDA0BD)
    Error at line 1
    중 오류가 발생했습니다.
    ORA-06512: "SYS.XMLTYPE",  48행
    ORA-06512:  5행

현상 : smarteditor에서 글 등록 시 xml로 파싱하여 패키지에서 insert 하는데 오류 발생

원인 : 글에서 xml 파싱할 수 없는 이모티콘을 사용하여 글을 등록하려고함

해결 : 이모티콘 제거 후 다시 submit


반응형
반응형

에러 메시지 : 
  ORA-00942: 테이블 또는 뷰가 존재하지 않습니다

현상 : 일반 쿼리에서는 정상적으로 사용이 되는데 패키지에서 프로시져로 사용할때 컴파일 에러 발생
원인 :  존재하는 테이블인데도 읽지 못하는 것은 권한 문제

해결 : 시스템 유저로 들어가서 권한을 할당해주는 작업 진행

grant select on [유저명.권한을 할당할 테이블명] to [테이블에 권한을 행사 할 유저명];

GRANT SELECT, DELETE, UPDATE, INSERT ON USER1.TABLE_NAME1 TO USER2;





반응형
반응형

오늘이 모여서 

내일을 빛나게 할거야!




반응형
반응형

1.  SVN LINUX서버접속
- cd /home/svn/xxx/xxx/conf (config 파일 접근) 
- ls로 확인(폴더,파일 확인)
- vi passwd(vi 편집기 열기)
- 계정 입력 (아이디=패스워드 형식)
- :w (저장)
- :q (종료)
- vi authz(vi 편집기 열기)
- 그룹 편집 ([groups] 하단에 newpor_team = 아이디, 아이디, 아이디 추가)
- :w (저장)
- :q (종료)




2. SVN 레파지토리 생성
- cd /home/svn/xxxxx/ (생성할 폴더 접근)
- svnadmin create --fs-type fsfs xxxxx (svn 레파지토리생성)
- cd /home/svn/xxxxx/xxxxx/conf (설정 폴더접근)
- ls로 확인(폴더,파일 확인)
- vi passwd(vi 편집기 열기)
- 계정 입력 (아이디=패스워드 형식)
- :w (저장)
- :q (종료)
- vi authz(vi 편집기 열기)



- 그룹 편집 ([groups] 하단에 xxxx_user= 아이디, 아이디, 아이디 추가)
- 권한 추가(
[/]
@xxxx_user= rw
추가)
- :w (저장)
- :q (종료)

반응형
반응형

1. API결과 json 객체로 변환 
StringBuilderresult =new StringBuilder();
try {
String krwStr = "USDKRW"; // default : USDKRW
if (type == 1) {
krwStr = "JPYKRW";
} else if (type == 2) {
krwStr = "EURKRW";
} else if (type == 3) {
krwStr = "CNYKRW";
}

String formatStr = "json"; // default : json
if (format == 1) {
formatStr = "xml";
}
                  
String urlStr = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22" + krwStr + "%22)&format=" + formatStr + "&env=store://datatables.org/alltableswithkeys&callback=";
                  
URL url = new URL(urlStr);
                  
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                  
InputStream stream;
if (conn.getResponseCode() == 200) //success
stream = conn.getInputStream();
else
stream = conn.getErrorStream();
                  
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
                  
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(result.toString());

if (element.isJsonObject()) {
JsonObject obj = element.getAsJsonObject();
if (obj.get("error") == null) {
JsonObject translatedText = obj.get("query").
getAsJsonObject().
get("results").
getAsJsonObject().
get("rate").
getAsJsonObject();
return translatedText;

}
}

2. gson(json객체)를 map으로 변환
// 환율 정보 가져오기
FinanceXChangeUtil exchange = new FinanceXChangeUtil();
                  
// gson(jsonobject) to map
JsonObject nestedJSON = exchange.getFinanceXChangeValue(0, 0);
Gson gson = new Gson();
LinkedTreeMap result = gson.fromJson(nestedJSON , LinkedTreeMap.class);
                  
                  
// 환율 정보 담기
setAttribute("exchange_rate", result);



※ 야후 API 서비스 종료







반응형

+ Recent posts