개발자로 가는 길(국비지원과정)/2. Oracle

11주차 질문_자바, 오라클 연동

레아Leah 2021. 6. 5. 23:27
반응형

[질문1]

 

해당 SQL구문이 실행되기 위해서 전달 받아야 하는 값이 있을 경우에는 parameter type을 반환 해줘야 하는 값이 있을 경우에는 result type을 지정해야 한다. 이때 type은 mybatis-config.xml에서 지정한 type Alias를 사용한다.

 

<CRUD id = "메소드명" parameterType = "전달인자의 타입" resultType = "리턴값의 타입" >

 

 

[안센세 설명]

int return은 resultType을 미지정해도 실패시 0을 들고 온다.

쭉 dao까지 와서 int result = mapper.insertBoard(board)가 나오는데 처리 실패시 0이 자동 반환된다. 

TRUE/FALSE가 필요하면 int result는 자동 0이기 때문에 기재힐 필요가 없다. 

하지만 select와 같이 무언가 정보를 가져와야 할 때는 result 명세로, 오라클에서 받아서 사장님에게 가지고 가야하니까 VO를 리턴해준다. 

 

// 글 등록
public int insertBoard(Board board);

<insert id="insertBoard" parameterType="Board">

 

// 전체 글 조회
public List<Board> selectAll();

<select id="selectAll" resultType="Board">

 

// 글 한 개 조회
public Board selectOne(int board_seq);

<select id="selectOne" parameterType="int" resultType="Board">

 

// 조회수 증가
public int updateHitcount(int board_seq);

<update id="updateHitcount" parameterType="int">

 

// 글 삭제
public int deleteBoard(int board_seq);

<delete id="deleteBoard" parameterType="int">

 

// 글 검색 (작성자, 제목, 글내용)
public List<Board> searchBoard(Map<String, Object> map);

<select id="searchBoard" parameterType="map" resultType="Board">

 

 

[질문2]

 

작성자(writer)의 값은 한 글자여도 괜찮지만 나머지는 안되기 때문에 모두 nextLine()으로 통일!

 

next()와 nextLine()의 차이

next()는 엔터를 무시해 데이터로 인식하지 않지만 nextLine()은 데이터로 인식한다. 

엔터를 버리는 작업을 해줘야 한다. 

 

문자열을 입력받아 리턴하는 nextLine()  메소드가 많이 쓰인다. 이 메소드는 String 타입으로 리턴해주는데 이것과 같은 타입의 메소드로 next() 가 있다. 다음 예제를 통해 이 둘 메소드의 차이를 알아보자.


nextLine()과 next()메소드의 차이는 nextLine()메소드는 Enter를 치기 전까지 쓴 문자열을 모두 리턴한다는 것이고 next() 메소드는 스페이스 즉 공백 전까지 입력받은 문자열을 리턴한다는 것이다.

 

nextLine()과 next()메소드를 섞어서 쓰면 안된다.

★keyin.nextLine();로 개행문자, 입력버퍼를 제거해주면 된다. 

 

반응형