반응형

#java #SimpleFormat #Calendar #yesterday #yyyyMMdd

      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
      SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMM");
      Calendar c1 = Calendar.getInstance(); 
      c1.add(Calendar.DATE, -1); // 오늘날짜로부터 -1 
      String yesterday = sdf.format(c1.getTime()); // String으로 저장
      String yesterMon = sdf2.format(c1.getTime()); // String으로 저장
반응형
반응형

String으로 된 날짜에 일자를 더해서 세팅

package com.blue.controller;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class CalendarEx2 { 

       public static void main(String[] arg) { 

             // 2019.12.31 + 2일
            DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
             Date date = null;
             try {
                    date = dateFormat.parse("20191231");
             } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
             }

             Calendar cal = Calendar.getInstance();
             cal.setTime(date);
             cal.add(Calendar.DATE, 2);
             System.out.println(date);
             System.out.println(cal.getTime());
            

             String strDate = dateFormat.format(cal.getTime());
             System.out.println(strDate);
 

       }


}
반응형
반응형

#NumberformatException #if #문자 #1글자비교  #equals #MyBatis #JAVA #자바

ex 1)
<if test="stringValue == 'Y'">
</if>

ex 2)
<if test="condition.equals('Y')">
</if>


지금처럼 한 글자를 다이나믹쿼리 IF  안에서 비교할 때

java.lang.NumberFormatException: For input string: "Y" 에러 또는

비교가 되지 않을 수 있다. (인식 불가 혹은 오작동 가능성도 있음)
결론적으로 위 현상은 myBatis 문제는 아니고

OGNL(Object Graph Navigation Language) 의 문제이다.

OGNL 인터프리터에서는 위 구문의 'Y' 를 char 형으로 인식하고,
'YY' 나 "Y" 는 String으로 인식한다. (따옴표를 잘보자)
그래서  이와 같은 구문을 비교할 때 
 NumberFormat으로 비교를 시도하여 Exception이 발생한다.
이유는 java의 char형은 실제로 문자의 코드값을 저장하기 때문이다.

그래서 아래와 같은 형변환이 가능하다.

char y = 'Y';
int code = (int)y; // code에는 Y의 코드값인 89가 저장된다

그래서 위와 같은 상황을 피하기 위해서는 다음과 같은 해결책이 존재한다.

1. <if test='stringValue == "Y"'> – 쌍따옴표와 홑따옴표의 위치를 변경

2. <if test="stringValue == &quot;Y&quot;"> – 쌍따옴표를 HTML 코드로 변경

3. <if test="stringValue == 'Y'.toString()"> – toString() 함수를 사용해 String 형으로 변환

4. 함수 생성 (equals 함수를 새로 생성하고 가져다 쓰는 방법 )




http://cofs.tistory.com/97 에서 설명하고 있는
함수를 생성해서
사용방법을 참조하여 equals함수를 재정의

1번과 4번 방법을 추천한다.


출처: https://cofs.tistory.com/96 [CofS]

반응형
반응형

JSTL -  <c:set>태그 사용법

<c:set target="${board}" property="title" value="제목을 변경합니다." />
<c:out value="${board.title}" />

<c:set target="${map}" property="title" value="맵에 제목을 입력합니다." />
<c:out value="${map.title}" />

<c:set var="title" value="제목 입니다." />
<c:out value="${title}" />

<%
String title = "스크립틀릿 제목입니다.";
pageContext.setAttribute("title", title);
%>
<c:out value="${title}" />
  

<c:set> 태그의 속성들
- value 속성 : 값을 입력합니다.  EL을 사용할 수 있습니다.
- target 속성 : 프로퍼티를 설정할 빈 또는 맵을 가집니다.
- property 속성 : 설정할 프로퍼티 입니다.
- var 속성 : 값이 저장되는 변수명 입니다.
- scope 속성 : 변수가 저장된  Scope 입니다. page, request, session, application 을 가질 수 있고, 기본값은 page 입니다.

반응형
반응형

#java #오늘 #일자 #string #format #YYYYMMDD

오늘 날짜를 문자 YYYYMMDD  포맷으로 나오게 하는 방법

import java.util.Calendar;

import java.text.SimpleDateFormat;



public class testToday{

    public static void main(String args[]){

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

        Calendar c1 = Calendar.getInstance();

	 String strToday = sdf.format(c1.getTime());



        System.out.println("Today=" + strToday);

    }

}
반응형
반응형

#iBATIS 와 #MyBatis 의 차이

iBATIS

MyBatis

태그

설명

태그

설명

 <isEqual>

 property 값이 같을때만 쿼리 실행 

 <if>와

<choose>, <when>, <otherwise>

 일반 개발언어의 

if or if ~ else와 동일

 <isNotEqual>

 property 값이 같지 않을 때만 쿼리 실행 

 <isGreaterThan>

 property 값이 비교값보다 클 경우 쿼리 실행 

<isGreaterEqual> 

 property 값이 비교값보다 같거나 클 경우 쿼리 실행

 <isLessEqual>

 property 값이 비교값보다 작거나 같을경우 쿼리 실행

 <isPropertyAvailable>

 property 값이 유효할 경우 쿼리 실행

 <isNotPropertyAvailable>

 property 값이 유효하지 않을 경우 쿼리 실행

 <isNull>

 property 값이 null일 경우 쿼리 실행 

<isNotNull> 

 property 값이 null이 아닐 경우 쿼리 실행 

<isEmpty> 

 property 값이 비어있을경우 쿼리 실행

<isNotEmpty> 

 property 값이 비어있지 않을경우 쿼리 실행 

 <isParameterPresent>

 parameter가 있을경우 쿼리 실행

<isNotParameterPresent> 

 parameter가 없을경우 쿼리 실행

<iterate> 

 배열 타입의 파라미터를 받을 때 활용

 <foreach>

 배열 타입의 파라미터를 받을 때 활용 

<dynamic> 

 하위 태그에 일치하는 내용이 존재할 경우   where절을 붙인다.

<where>, <trim> 

 iBATIS의 <dynamic>과 같이 조건에 따라 where절을 추가할 때 사용

 

 

 <set>

 동적으로 update 구문을 만들 때 사용

   

 <bind>

 변수를 생성하는 태그 

 


  

4       iBatis


  

  

MyBatis 


  

비고


  

  

com.ibatis.*


  

  

org.apache.ibatis.*


  

  

패키지 구조 변경


  

  

SqlMapConfig


  

  

Configration


  

  

용어변경


  

  

sqlMap


  

  

mapper


  

  

용어변경


  

  

sqlMapClient


  

  

sqlSession


  

  

구문대체


  

  

rowHandler


  

  

resultHandler


  

  

구문대체


  

  

resultHandler


  

  

SqlSessionFactory


  

  

구문대체


  

  

parameterMap, parameterClass


  

  

parameterType


  

  

속성 통합


  

  

resultClass


  

  

resultType


  

  

용어변경


  

  

#var#


  

  

#{var}


  

  

구문대체


  

  

$var$


  

  

${var}


  

  

구문대체


  

  

<isEqual> , <isNull>


  

  

<if>


  

  

구문대체


  

.

반응형
반응형

자바-JSP-Spring 강좌

https://www.youtube.com/playlist?list=PLieE0qnqO2kTyzAlsvxzoulHVISvO8zA9

 

자바-JSP-Spring 강좌 - YouTube

 

www.youtube.com

 

반응형
반응형

[JSTL] Tag가 jsp 화면에 그대로 노출될 경우, escapeXml  

JSTL로  처리를 할 때, 태그가 적용이 안되고 화면에 그대로 노출이 될 때가 있다.

기본적으로 escapeXml 이라는 값이 true로 처리가 되고, 이 속성은 <, > 와 같은 값들을 <, > 등으로 변경하여 화면에 뿌려주게 된다.

하지만, 태그를 원하는 대로 뿌려줘야 할 경우도 존재하니 이럴 경우 escapeXml="false" 처리를 해주면 된다.

<c:out value="${값}" />
<c:out value="${값}" escapeXml="false" />
 
반응형

+ Recent posts