myBatis-pk,sequence 생성

 

1. 이전방식-개발과정

   1. sql단, pk생성하는 sql 및 xml id 생성

   2. sql단, insert 하는 sql 및 xml id 생성

   3. java단, pk 생성하는 sql 호출

   4. java단, 생성한 pk를 얻어서 insert할 객체에 set

   5. java단, insert하는 sql 호출

  

2. 개선된 개발과정

   1. sql단, pk생성하는 sql 및 insert 하는 sql 2개를 xml id 1개로 생성

   2. java단, pk생성 및 insert하는 sql id(1개) 호출

   3. java단, 위 sql을 호출 하면 넘겨준 객체에  신규생성된 pk가 같이 넘어 온다.

 

3. xml(sql)단

 

4. java단

'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis - 사용가능한 jdbcType  (0) 2018.07.18
myBatis. Sql WHERE문에서 in 처리(2)  (0) 2018.07.17
myBatis. Sql WHERE문에서 in 처리  (0) 2017.12.05
myBatis - isEmpty, isNull  (0) 2017.12.05
myBatis. if. case 문  (0) 2017.12.05
Posted by 농부지기
,

[ myBatis - 사용가능한 jdbcType ]

 

 


JdbcType  ARRAY 
JdbcType  BIGINT 
JdbcType  BINARY 
JdbcType  BIT 
JdbcType  BLOB 
JdbcType  BOOLEAN 
JdbcType  CHAR 
JdbcType  CLOB 
JdbcType  CURSOR 
JdbcType  DATALINK 
JdbcType  DATE 
JdbcType  DATETIMEOFFSET 
JdbcType  DECIMAL 
JdbcType  DISTINCT 
JdbcType  DOUBLE 
JdbcType  FLOAT 
JdbcType  INTEGER 
JdbcType  JAVA_OBJECT 
JdbcType  LONGNVARCHAR 
JdbcType  LONGVARBINARY 
JdbcType  LONGVARCHAR 
JdbcType  NCHAR 
JdbcType  NCLOB 
JdbcType  NULL 
JdbcType  NUMERIC 
JdbcType  NVARCHAR 
JdbcType  OTHER 
JdbcType  REAL 
JdbcType  REF 
JdbcType  ROWID 
JdbcType  SMALLINT 
JdbcType  SQLXML 
JdbcType  STRUCT 
JdbcType  TIME 
JdbcType  TIMESTAMP 
JdbcType  TINYINT 
JdbcType  UNDEFINED 
JdbcType  VARBINARY 
JdbcType  VARCHAR 

 

'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis-pk,sequence 생성  (0) 2019.07.11
myBatis. Sql WHERE문에서 in 처리(2)  (0) 2018.07.17
myBatis. Sql WHERE문에서 in 처리  (0) 2017.12.05
myBatis - isEmpty, isNull  (0) 2017.12.05
myBatis. if. case 문  (0) 2017.12.05
Posted by 농부지기
,

[ myBatis. Sql WHERE문에서 in 처리(2) ]

 

1. 참고

    - myBatis 기능인  <foreach>를 사용할 경우 상당한 overhead가 발생한다.

   그렇다고 $(문장 그대로 대입)형으로 넘기면 차후에  sql injection에서 추출된다.

 

2. 방법1

  - REGEXP 함수사용하기

    REGEXP_SUBSTR()함수를 사용해서 콤마로 구분된 값을 취하고

    CONNECT BY 를 이용해서 문자열의 콤마갯수+1 만큼 LOOP를 돌아 레코드로 만든다.

  - cdList = "111,222,333,444"; 와 같이 넘긴다.

  - SQL

       

 

3. 방법2

    - DB FUNCTION  : 위 방법1의 SQL을  DB FUNCTION으로 만들어서 결과를 Record를 RETURN

    - 방법1보다 간단 하지만  아주 미세하게 속도는 느림 (고려할만한 수준의 속도 저하는 아님)

    - SQL

          

 

     - FUNCTION

      

 

 

4. 방법3

    1. 개발방법(설명)

       - IN 절에서 사용할 IN_테이블 하나 생성

       - java 단에서 in절에 적용될 code에 대해서 insert처리 한다.

       - IN_테이블을 이용해서  SQL문장 완성  

    2. 실 개발방법

       - (테이블)

          CREATE TABLE IN_TABLE

                     (  GUBN  VARCHAR2(20)    NOT NULL

                     ,  CODE   VARCAHR2(100) NOT NULL

                     )

       - (java)

          . 코드값이 : 111,222,333,444 와 같이 4개가 존재 시

          . IN_TABLE에  [GUBN='partCd'], [CODE='1111', CODE='2222', ... ] 와 같이 Insert한다.

       - (sql)

         

 

 

'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis-pk,sequence 생성  (0) 2019.07.11
myBatis - 사용가능한 jdbcType  (0) 2018.07.18
myBatis. Sql WHERE문에서 in 처리  (0) 2017.12.05
myBatis - isEmpty, isNull  (0) 2017.12.05
myBatis. if. case 문  (0) 2017.12.05
Posted by 농부지기
,

[ myBatis. Sql WHERE문에서 in 처리 ]

 

[ 방법 1 ] - List이용

1. java단 - List객체 만들기

    - 콤마를 구분으로 해서 넘어온 문자열을

       myBatis에서 필요한 List 객체로 만들기

        

 

 

2. java단 - mybatis호출

    - foreach문 설명

       . collection : java단에 collection객체명

       . item          : mybatis에서 사용할 명칭 (새로 지정가능)

 

   

 

 

 

 

3. mybatis - in 처리

   

 

 

[ 방법 2 ] - dynamic 이용

1. java단 - mybatis호출

   

 

 

2. mybatis - in 처리

   

 

 

[ 방법 3 ] - dynamic 이용  (테스트하지 않았음. 안될 확율이 100%) - 잘 연구해서 적용 ^^

1. java단 - List<Map<String, Object>> 객체 만들기

   

 

2. java단 - mybatis호출

   

 

3. mybatis

   

'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis - 사용가능한 jdbcType  (0) 2018.07.18
myBatis. Sql WHERE문에서 in 처리(2)  (0) 2018.07.17
myBatis - isEmpty, isNull  (0) 2017.12.05
myBatis. if. case 문  (0) 2017.12.05
myBatis에서 foreach 사용하기  (0) 2017.06.09
Posted by 농부지기
,

[ myBatis - isEmpty, isNull ]

 

 

* ibatis에서 <isEmpty> <isNull>등이 사용가능 했지만 Mybatis에서는 불가.

Posted by 농부지기
,

[ myBatis. if. case 문 ]

 

1. 대소문자 무시

   

 

2. and, or

   

 

3. 한글자만 비교 할때는 반드시 .toString()을 해줘야 됨

   

 

    또는 case문장에서

   <when test="s_keyword.equalsIgnoreCase('W')"> 하거나
   <when test='s_keyword.equals("W")'> 이렇게 처리한다.

 

4. in, or를 여러개

   

 

5. case 문

'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis. Sql WHERE문에서 in 처리  (0) 2017.12.05
myBatis - isEmpty, isNull  (0) 2017.12.05
myBatis에서 foreach 사용하기  (0) 2017.06.09
myBatis.oracle.sql.CLOB@ 결과 오류시  (0) 2017.01.31
myBatis.CLOB Column type  (0) 2017.01.31
Posted by 농부지기
,

[ myBatis에서 foreach 사용하기 ]

 

 

1. 자바단

   

 

 

2. sql foreach 부분만

  

'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis - isEmpty, isNull  (0) 2017.12.05
myBatis. if. case 문  (0) 2017.12.05
myBatis.oracle.sql.CLOB@ 결과 오류시  (0) 2017.01.31
myBatis.CLOB Column type  (0) 2017.01.31
myBatis.SQL문 안에서 <, > 사용  (0) 2017.01.31
Posted by 농부지기
,

[ myBatis.oracle.sql.CLOB@  결과 오류시 ]



 

오라클 함수중 WM_CONCAT()  함수를 사용하면 기본적으로 VARCHAR type으로 return한다.
그런데,  결과값이 너무 길 경우 오라클은 CLOB type으로 return하게 되고,
myBatis, JAVA에서는 CLOB type이 없기 때문에 최종결과는 "oracle.sql.CLOB@  ..."와 
같은 오류값이 RETURN 된다.

해결방법 : 원래 clob type을 string으로 변환하는 Mybatis 구문이 있지만 이상하게 
                 WM_CONCAT()함수 결과 컬럼에 대해서는 적용되지 않는다.
                그래서 TO_CHAR( WB_CONCAT(. ... ) ) 와 같아 . TO_CHAT()함수로 묶어 준다.
                문약, TO_CHAR()함로도 안되면  TO_CHAR(SUBSTR(컬럼명, 1, 2000)) AS 컬럼명
                과 같이 SUBSTR(0함수도 사용하면 된다.

<sqlMap namespace="BPPA0080">
    <
select id="selectShopList"  parameterClass="java.util.HashMapresultClass="java.util.HashMap" >
        SELECT /* BPPA0080.shopList */
              AREA2_CLS_CD
            , AREA2_CLS_NM
            , SHOP_CLS_NM
            , TO_CHAR(SUBSTR(BEF_YY_LIST, 1, 4000)) AS BEF_YY_LIST
            , TO_CHAR(SUBSTR(NEXT_YY_OPEN_LIST, 1, 2000)) AS NEXT_YY_OPEN_LIST
          FROM TABLE_NAME
    </
select>
</
sqlMap>

 


'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis. if. case 문  (0) 2017.12.05
myBatis에서 foreach 사용하기  (0) 2017.06.09
myBatis.CLOB Column type  (0) 2017.01.31
myBatis.SQL문 안에서 <, > 사용  (0) 2017.01.31
myBatis.xml Tag  (0) 2017.01.31
Posted by 농부지기
,

[ myBatis.CLOB Column type ]


 

 
 

/* --------------------------------------------------------------------------------------------- */
/*  Mybatis에서는 조회SQL 문장에서 CLOB 컬럼을 조회하면 이 CLOB TYPE에 대한 형(type)이 없다.     */
/*  그래서 CLOB TYPE에 대한 컬럼 결과를 String 형(type)으로 변환하는 구문이 필요하다.            */
/* --------------------------------------------------------------------------------------------- */

<
sqlMap namespace="CMLO0040">

    <
resultMap id="clobHashMapclass="java.util.HashMap">   
        <
result property="SQL_FULLTEXTcolumn="SQL_FULLTEXTjdbcType="CLOBjavaType="java.lang.String"/>
    </
resultMap>

    <
select id="selectSqlparameterClass="java.util.HashMap" resultMap="clobHashMap" >
        SELECT /* CMLO0040.selectSql */
               SQL_FULLTEXT
          FROM TCM_LOG_DB
         WHERE NO = #NO#
    </
select>
       
</
sqlMap>


'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis에서 foreach 사용하기  (0) 2017.06.09
myBatis.oracle.sql.CLOB@ 결과 오류시  (0) 2017.01.31
myBatis.SQL문 안에서 <, > 사용  (0) 2017.01.31
myBatis.xml Tag  (0) 2017.01.31
myBatis XML 기본 문법  (2) 2017.01.31
Posted by 농부지기
,

[ myBatis.SQL문 안에서 <, > 사용 ]



 

 

SQL문 안에서 <, > 사용할때 정상적으로 처리는 된것 같은데, dataset을 리턴받아서 처리를 못할수 있습니다.
  
이때  <를 〈로 >를 〉로 바꿔서 쓰시면 정상적으로 작동합니다.(ascii)
 
SQL문장안에 <, >을 사용한 경우이고 db에 있는데 데이터를 가져올때는 해당되지 않습니다.
 
select '신한법인카드<-엘지법인카드'
from dual


'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis에서 foreach 사용하기  (0) 2017.06.09
myBatis.oracle.sql.CLOB@ 결과 오류시  (0) 2017.01.31
myBatis.CLOB Column type  (0) 2017.01.31
myBatis.xml Tag  (0) 2017.01.31
myBatis XML 기본 문법  (2) 2017.01.31
Posted by 농부지기
,