<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="post"><selectid="findByid"parameterType="string"resultType="list">
<![CDATA[
select *
from post
ORDER BY no DESC;
]]>
</select></mapper>
PostRepository에서 list로 쿼리 결과값을 받아서 그럼 post.xml에서도 list로 반환하겠지? 라고 생각했는데
아니였다.
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="post"><selectid="findByid"parameterType="long"resultType="postvo">
<![CDATA[
select *
from post
where category_no=#{category_no}
ORDER BY no DESC;
]]>
</select></mapper>
package object_1;
import java.lang.annotation.*;
/**
* toString()을 위한 @Desc어노테이션
* */@Retention(RetentionPolicy.RUNTIME)// 자바 로딩 된 후에도 어노테이션 사용하겠어@Target(ElementType.FIELD)// 해당 어노테이션을 전연변수에만 사용하겠다.public@interface Desc{
public String name(); // @Desc(name = "속성명")사용 가능하게 타입 정의
}
(DefaultVo.java)
package object_1;
import java.lang.reflect.Field;
publicclassDefaultVo{
@Overridepublic String toString(){
//StringBuffer 클래스 객체 생성 : 문자열 자료 저장하기 위함
StringBuffer sb = new StringBuffer();
//문자열에 Class 객체생성, 클래스 정보 저장
Class<? extends DefaultVo> clazz = this.getClass();
sb.append(clazz.getName() + "정보");
//Field 목록 객체 생성
Field[] declaredFields = clazz.getDeclaredFields();
for(Field f : declaredFields) {
if(f != null) {
//변수 조회
String name = f.getName();
String desc = "";
//@Desc 어노테이션에 명시된 name()값 조회 : 필드 항목명
Desc anno = f.getDeclaredAnnotation(Desc.class);
if(anno != null) {desc = anno.name();}
//전역 변수 값 조회
String value = "";
try {
//접근 권한 부여 -> 전역변수 값 조회 -> 접근 권한 복원boolean accessible=f.isAccessible();
f.setAccessible(true);
Object obj = f.get(this);
if(obj != null) { value = obj.toString();}
f.setAccessible(accessible);
}catch(IllegalArgumentException e) {e.printStackTrace();
}catch(IllegalAccessException e) {e.printStackTrace();}
//앞 문자열에 name, value, desc의 정보를 갖는 문자열 추가
sb.append("\r\n\t" + name + " = "+ value + " ["+ desc + "]");
}
}
return sb.toString();
}
}
부모 클래스 : class java.lang.Object 함수 = finalize : [] 함수 = wait : [long] 함수 = wait : [long, int] 함수 = wait : [] 함수 = equals : [class java.lang.Object] 함수 = toString : [] 함수 = hashCode : [] 함수 = getClass : [] 함수 = clone : [] 함수 = notify : [] 함수 = notifyAll : [] 함수 = registerNatives : []
부모 클래스 : class java.lang.Object
상속이 없으면 Object클래스가 부모 클래스임
Object는 클래스들의 기본, 최상위 타입
- hashCode() 함수
객체에 해시코드 값을 반환하는 함수
해시코드란 : 객체를 구별하기 위한 값, 메모리 주소를 바탕으로 정수화된 값
객체의 해시코드 값의 중복이 일어날 가능성이 있음 -> 중복이란 말이 똑같은 곳 가리킨다는 것인가??? 근데 주의라고 적혀있으면 뭐지
- toString()함수
해당 객체의 정보를 문자열로 반환하는 함수
객체 정보 : '클래스명@해시코드(16진수로)' -> 대부분 재정의를 하여 사용함
package Object;
publicclassPracticeHash_toString{
publicstaticvoidmain(String [] args){
PracticeHash_toString a = new PracticeHash_toString();
int hashCode = a.hashCode();
// int to 16진수 : Integer.toHexString
String hexHashCode = Integer.toHexString(hashCode);
String toString = a.toString();
System.out.println("클래스정보 : " +toString + "\nHeshcode 값 : " + hexHashCode );
}
}
DefaultCategoryDataset dataset1 = new DefaultCategoryDataset(); // bar chart 1
DefaultCategoryDataset dataset12 = new DefaultCategoryDataset(); // bar chart 2
DefaultCategoryDataset dataset2 = new DefaultCategoryDataset(); // line chart 1