접근제한자는 클래스, 함수 가장 앞에 선언되며

JAVA은 접근제한자가 4개 존재한다

명시하지 않으면 default이 기본이다

 

  • public : 제약없이 어느곳에서 접근가능
  • private : 선언한 해당 클래스 내에서만 접근가능(클래스에 선언 불가)
  • protected : 선언한 클래스 및 상속받은 자식 클래스에서만 접근가능(클래스에 선언 불가)
  • default : 동일 패키지 내에서만 접근가능(아무것도 명시하지 않으면 default이 기본)

 

'Programming > JAVA' 카테고리의 다른 글

[SPRING] ResultMap  (0) 2020.12.11
[JAVA] 빈 문자열, NULL 다루기  (0) 2020.11.19
[JAVA] 문자열 비교  (0) 2020.11.19
[JAVA] 대소문자 변환  (0) 2020.11.19
[SPRING] Spring 구조 및 DTO, VO 개념  (0) 2020.10.07

#ResultMap

스프링 프레임워크에서 XML파일에서 SQL을 처리할때(Mybatis)

테이블의 컬럼명과 자바Bean(VO, DTO)의 필드명이 다를때 매칭 시켜주는 기능

SQL문 최상위에 작성해야 한다

 

 

이러한 문제가 발생하는 원인은 DB에 따라 대소문자 구분방식이 다르기 때문에

컬럼명을 작성할때 _언더바를 쓰는 경우가 있다(postgreSQL)

 

 

# 작성법

	<resultMap id="boardMap" type="com.test.site.Entity.BoardVO">
        <id column="GOODS_NUMBER"  --필수, 변환 대상 이름
            property="goodsNumber" --필수, 변환 할 이름
            jdbcType=""            --옵션, DB컬럼 데이터 타입 명시적 선언
            javaType=""            --옵션, Bean 필드 데이터 타입 명시적 선언
            nullValue=""           --옵션, 해당 컬럼 값이 null일 경우 대신 반환할 값 
        />
	</resultMap>

 

#테이블 컬럼명과 Bean의 필드명이 일치하는 경우

	<select id="selectBoard" resultType="com.test.site.Entity.BoardVO">
		SELECT * FROM 테이블
	</select>

 

 

#테이블 컬럼명과 Bean의 필드명이 일치하지 않는 경우

resultMap의 result 속성은 SELECT 결과의 컬럼명에 매칭된다

	<resultMap id="boardMap" type="com.test.site.Entity.BoardVO">
		<result column="GOODS_NUMBER" property="goodsNumber"/>
		<result column="GOODS_NAME" property="goodsName"/>
		<result column="GOODS_ID" property="goodsId"/>
		<result column="GOODS_PRICE" property="goodsPrice"/>
		<result column="GOODS_COST" property="goodsCost"/>
		<result column="INSERT_DATE" property="insertDate"/>
		<result column="UPDATE_DATE" property="updateDate"/>
		<result column="FILE_NAME" property="fileName"/>
	</resultMap>

	<select id="selectBoard" resultMap="boardMap">
		select * from mst_goods
	</select>

 

SELECT문의 resultType대신 resultMap을 적어주고

resultMap을 작성하면 된다

 

# resultMap의 id가 SELECT문의 resultMap에 작성하는 id이다

# resultMap의 type은 기존 SELECT문의 resultType을 적어주면 된다(int, String, Bean경로)

 

resultMap의 result 속성은 column을 property로 변환한다

아래 코드는 테이블 컬럼명 GOODS_NUMBER를 goodsNumber로 변환한다

	<resultMap id="boardMap" type="com.test.site.Entity.BoardVO">
		<result column="GOODS_NUMBER" property="goodsNumber"/>

 

그리고 변환한 property명을 type에 반환한다

 

'Programming > JAVA' 카테고리의 다른 글

[JAVA] 접근 제한자  (0) 2020.12.18
[JAVA] 빈 문자열, NULL 다루기  (0) 2020.11.19
[JAVA] 문자열 비교  (0) 2020.11.19
[JAVA] 대소문자 변환  (0) 2020.11.19
[SPRING] Spring 구조 및 DTO, VO 개념  (0) 2020.10.07

빈 문자열, NULL검사 방법에는 아래가 존재합니다

 

#length

//길이 검사
String str = "";
if(str.length == 0){
}

//공백 제거 후 길이 검사
String str = "";
if(str.trim().length == 0){ // 공백 스페이스 제거 후 길이 검사
}

//NULL 검사 추가
String str = "";
if(str.length == 0 || str == NULL){
}

 

#equals()

String str = "";
if(str.equals("")){
}

//NULL 검사 추가
String str = "";
if(str.equals("") || str == NULL){
}

 

#isEmpty() : JAVA6 이상

String str = "";
if(str.isEmpty()){
}


String str = "";
if(str.trim().isEmpty()){//공백 스페이스 제거 후 NULL검사
}

//NULL 검사 추가
String str = "";
if(str.isEmpty("") || str == NULL){
}

 

#isBlank() : JAVA11 이상, NULL이거나  공백 스페이스면 TRUE를 반환

String str = "";
if(str.isBlank()){
}

//NULL 검사 추가
String str = "";
if(str.isBlank("") || str == NULL){
}

 

 

하지만 위의 방법은 빈값 검사일뿐 NULL처리에 대한 코드가 없어서

값이 NULL일 경우 IF문에 str == NULL과 같은 NULL에 대한 대응을 하지 않으면

결과에서 NullPointException에러를 발생시킵니다

 

그 외에 외부 라이브러리를 사용한 방법이 있는데

Apache Commons Lang입니다

 

https://mvnrepository.com/artifact/org.apache.commons/commons-lang3

 

Maven Repository: org.apache.commons » commons-lang3

Apache Commons Lang, a package of Java utility classes for the classes that are in java.lang's hierarchy, or are considered to be so standard as to justify existence in java.lang. VersionRepositoryUsagesDate3.11.x3.11Central1,231Jul, 20203.10.x3.10Central1

mvnrepository.com

#Maven

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>

#Gradle

// https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.9'

 

위 코드를 추가해서 사용가능합니다

 

Apache Commons Lang을 사용했을 경우 NULL검사를 할 필요가 없습니다

 

#StringUtils.isEmpty() : 문자열이 빈값이거나 공백스페이스 NULL이면 TRUE 반환

String str = "";
if(StringUtils.isEmpty(str)){
}

#StringUtils.isBlank() : 문자열이 빈값이거나 NULL이면 TRUE 반환, 공백스페이스는 FALSE

String str = "";
if(StringUtils.isBlank(str)){
}

'Programming > JAVA' 카테고리의 다른 글

[JAVA] 접근 제한자  (0) 2020.12.18
[SPRING] ResultMap  (0) 2020.12.11
[JAVA] 문자열 비교  (0) 2020.11.19
[JAVA] 대소문자 변환  (0) 2020.11.19
[SPRING] Spring 구조 및 DTO, VO 개념  (0) 2020.10.07

자바에서 문자열 비교 방법은

==

equals()

equalsIgnoreCase()

이 있다

 

그 전에 기본자료형과 참조자료형에 대한 이해가 필요하다

기본자료형 : 변수가 다르더라도 값이 같으면 같은 주소를 가르킨다

참조형(래퍼클래스) : 값이 같더라도 다른 주소를 가르킨다

 

https://plone93.tistory.com/46

 

[JAVA] WrapperClass(래퍼 클래스)

#WrapperClass(래퍼 클래스) 자바 자료형은 기본타입(int, char, boolean..)과 참조타입(class, interface)와 같은 객체 구분된다 기본타입을 객체처럼 다루기 위해서 사용하는 것이 래퍼 클래스 이다 #특징 기

plone93.tistory.com

 

 

# == (등위연산자) : 주소값을 비교한다

String str1 = "ABCDE"; //기본 자료형
String str2 = "ABCDE";

String str3 = new String("ABCDE"); //참조형
String str4 = new String("ABCDE");

//== : 주소를 비교
if(str1 == str2) // TRUE, 기본자료형은 값이 같으면 같은 주소를 가르킨다
if(str1 == str3) // FALSE, 참조형은 값이 같더라도 다른 주소를 가르킨다

 

# equals() : 값을 비교한다, 대소문자 구분함

String str1 = "ABCDE"; //기본 자료형
String str2 = "ABCDE";

String str3 = new String("ABCDE"); //참조형
String str4 = new String("ABCDE");

//equals : 값을 비교
if(str1.equals(str2)) // TRUE, 같은 주소, 같은 값
if(str1.equals(str3)) // TRUE, 다른 주소, 같은 값

 

# equalsIgnoreCase(): 값을 비교한다, 대소문자 구분 안함

String str1 = "ABCde"; //기본 자료형
String str2 = "abcDE";

String str3 = new String("ABCde"); //참조형
String str4 = new String("abcDE");

//equalsIgnoreCase : 값을 비교, 대소문자 구분 안함
if(str1.equalsIgnoreCase(str2)) // TRUE, 같은 주소, 같은 값
if(str1.equalsIgnoreCase(str3)) // TRUE, 다른 주소, 같은 값

'Programming > JAVA' 카테고리의 다른 글

[SPRING] ResultMap  (0) 2020.12.11
[JAVA] 빈 문자열, NULL 다루기  (0) 2020.11.19
[JAVA] 대소문자 변환  (0) 2020.11.19
[SPRING] Spring 구조 및 DTO, VO 개념  (0) 2020.10.07
[JAVA] WrapperClass(래퍼 클래스)  (0) 2020.10.04

자바  대소문자로 변환하는 내장함수로는

변수명.toUpperCase : 대문자 변환

변수명.toLowerCase : 소문자 변환

이 있다

 

#대문자 변환

String str = "abcde";
String resultStr = str.toUpperCase(); //대문자로 변환
System.out.println(resultStr); //출력, ABCDE


String str = "abCDe";
String resultStr = str.toUpperCase(); //대문자로 변환
System.out.println(resultStr); //출력, ABCDE

#소문자로 변환

String str = "ABCDE";
String resultStr = str.toLowerCase(); //소문자로 변환
System.out.println(resultStr); //출력, abcde


String str = "AbcDE";
String resultStr = str.toLowerCase(); //소문자로 변환
System.out.println(resultStr); //출력, abcde

'Programming > JAVA' 카테고리의 다른 글

[JAVA] 빈 문자열, NULL 다루기  (0) 2020.11.19
[JAVA] 문자열 비교  (0) 2020.11.19
[SPRING] Spring 구조 및 DTO, VO 개념  (0) 2020.10.07
[JAVA] WrapperClass(래퍼 클래스)  (0) 2020.10.04
[JAVA] 정규표현식  (0) 2020.10.01

+ Recent posts