2018년 6월 14일 목요일

티베로 파이프라인드 테이블 함수 생성 및 사용

화면에서 파라미터 1,2,3으로 넘어오는 변수를

mybatis에서 for each 문을 이용하여 in 절을 이용하여 쿼리를 보통 하는데

이번에는 자바단에서 list를 만들수 없는 상황.

그래서 오라클에서 사용하는 pipelined 를 이용한 table 형태를 반환하는 함수 생성.

티베로도 잘 되는 구만.

WITH tt AS ( SELECT '1,2,3' AS txt FROM dual )
SELECT TRIM ( REGEXP_SUBSTR(txt, '[^,]+',1, LEVEL )) AS txt
FROM tt
CONNECT BY INSTR(txt, ',', 1, LEVEL-1) > 0
;




CREATE PACKAGE PKG_TEST IS
  TYPE rec IS RECORD(cd VARCHAR2(100), cd2 VARCHAR2(100));
  TYPE tbl_rec IS TABLE OF rec;
END;
/

CREATE OR REPLACE FUNCTION pipelined_table_func
(
    p_value IN varchar
)
RETURN PKG_TEST.TBL_REC PIPELINED
AS
x PKG_TEST.REC;

CURSOR c_sc111 IS
  WITH tt AS ( SELECT p_value AS txt FROM dual )
SELECT TRIM ( REGEXP_SUBSTR(txt, '[^,]+',1, LEVEL )) AS txt
FROM tt
CONNECT BY INSTR(txt, ',', 1, LEVEL-1) > 0
 ;

c_sc111_r c_sc111%ROWTYPE;


BEGIN

  OPEN c_sc111;
      LOOP
        FETCH c_sc111 INTO c_sc111_r;
        EXIT WHEN c_sc111%NOTFOUND;

          x.cd := c_sc111_r.txt;
    PIPE ROW(x);

      END LOOP;

    CLOSE c_sc111;


END;
/






WITH data1 AS (
SELECT '1' AS code, '대한민국1' AS codename FROM dual
UNION ALL
SELECT '2', '대한민국2' FROM dual
UNION ALL
SELECT '3', '대한민국3' FROM dual
UNION ALL
SELECT '4', '대한민국4' FROM dual
UNION ALL
SELECT '5', '대한민국5' FROM dual
UNION ALL
SELECT '6', '대한민국6' FROM dual
UNION ALL
SELECT '7', '대한민국7' FROM dual
UNION ALL
SELECT '8', '대한민국8' FROM dual
UNION ALL
SELECT '9', '대한민국9' FROM dual
)
SELECT * FROM
 data1 a,
 TABLE(pipelined_table_func(',1,2,3,')) b
 WHERE a.code = b.cd
;

2018년 4월 15일 일요일

이클립스 업데이트 오류 What to do about Eclipse's “No repository found containing: …” error messages?

What to do about Eclipse's “No repository found containing: …” error messages?





Contact all update sites during install to find required software” 체크 되어 있는거 풀고 진행하면됨.







스프링 datasource 2개 이상, datasource 멀티


 sqlSessionTemplate bean 부분에 primary="true"를 설정한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<bean id="dataSourceOne" destroy-method="close" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://1.1.1.1:3306/test" />
        <property name="username" value="1111" />
        <property name="password" value="1111" />
        <property name="initialSize" value="1" /> 
    </bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations">
            <list>
                <value>classpath*:aaa/a1/**/*.xml</value>
            </list>
        </property>
    </bean>
   <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" primary="true">
        <constructor-arg index="0" ref="sqlSession"/>
    </bean>  
    
<bean id="dataSource2" destroy-method="close" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://2.2.2.2:3306/test" />
        <property name="username" value="2222" />
        <property name="password" value="2222" />
        <property name="initialSize" value="1" /> 
    </bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource2" />
        <property name="mapperLocations">
            <list>
                <value>classpath*:bbb/b1/**/*.xml</value>
            </list>
        </property>
    </bean>
   <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSession"/>
    </bean>      

log4j 로그 한글 깨짐

log4j.properties 로 로그를 남기고 있다.

한글이 깨졌네..쩝

아래의 빨간색에 encoding을 UTF-8로 추가하면 된다.
encoding은 서버에 맞게 설정하면 된다.

참고로 stdout 은 콘솔 로그다.
로컬 톰켓에 붙여서 볼려면 당근 필요하고
서버에 올라가서 jeus등의 로그에 붙여서 볼려면 필요하다.

jeus 로그에 LOG4j에 로그를 붙여서 볼려면 추가하고 필요없으면 빼면 된다.

# Root Logging
log4j.rootLogger=INFO, stdout, logfile

# stdout Appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.encoding=UTF-8
log4j.appender.stdout.layout.ConversionPattern=%d %-5p %c(%M:%L) - %m%n

# File Appender
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Threshold=DEBUG
log4j.appender.logfile.File=/logs/test.log
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.BufferSize=8192
log4j.appender.logfile.Append=true
log4j.appender.logfile.Encoding=UTF-8
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %-5p %c(%M:%L) - %m%n


# SQL Logging
#log4j.logger.com.ibatis=DEBUG
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.CallableStatement=DEBUG
#log4j.logger.java.sql.ResultSet=DEBUG


2018년 3월 19일 월요일

publish/export dependency: 값이 없거나 노드 자체가 없는 경우 세팅

eclipse + java build path  등록시

publish/export dependency:  값이 없거나 노드 자체가 없는 경우 세팅


방법 1. 

eclipse


.classpath 에서
해당 라이브러리를 찾아서
아래의 문구 삽입
<classpathentry kind="lib" path="/techdom-web/target/classes/swe">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/classes"/>
</attributes>
</classpathentry>



방법 2.



이렇게 추가하면 된다.




2018년 2월 25일 일요일

Websocket + java + tomcat 8

Websocket + java + tomcat 8


tomcat 7.0.53 에서는 작동안됨.

: 오류 : Error during WebSocket handshake: Unexpected response code: 404

톰캣 7 버전마다 차이가 있는건가??

뭐 하여간 tomcat 8로 변경하고 ok

부들부들

계속 업데이트 해야겠네..여기다.