11주차 질문_자바, 오라클 연동
[질문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();로 개행문자, 입력버퍼를 제거해주면 된다.