Spring/개념정리
Spring JDBC 실습 (selectAll / One)
Itchild
2024. 7. 4. 13:53
728x90
반응형
selectOne

public BoardVO selectOne(BoardVO bVO) {
System.out.println("BoardDAO2 로그 selectOne() 메서드");
Object[] args= { bVO.getBid() };
// input 자리에 뭐가 들어갈지 모르기에 배열을 만들어야 된다.
// 그럴땐 최상위 오브젝트
// output : new 나 보드 줘야해 ~ new BoardRowMapper()
return jdbcTemplate.queryForObject(selectOne, args,new BoardRowMapper());
// output은 select * : * 여기에 들어가는게 무엇인지를 생각해서 아웃풋을 만든다.
}
// executeQuery() 개념 (selectOne , INPUT 자리 , OUTPUT 자리)
// 인자자리를 정해져 있지 않았었다 => CUD 파트는
// select 류는 input, output이 정해져 있다.
//queryForObject() 는 update() 와 달리 메서드 시그니쳐가 정해져 있다.
// SQL을 실행할 때에 필요한 INPUT과 , << 배열의 형태로
// SQL을 실행완료한 후의 OUTPUT을 각각 지정해야함 << 객체의 형태로 지정을 해줘야 한다.
output으로 오는 new BoardRowMapper() 는 따로 밑에 클래스를 만들어 줘야 한다.

RowMapper 인터페이스
// 어떤 DB를 어떤 자바객체를 알려준다. // 인터페이스다 보니 강제를 하는데
// 어떤 DB를 어떤 POJO에 매핑하는것을 강제
1) 어떤 ResultSet(DB)을 어떤 자바객체(POJO)와 매핑해야하는지 강제해주는 역할
-> DB와 매핑되는 자바객체 == "VO"
2) VO를 알아야하기때문에 < > 설정 필수 // 로우맵퍼 제네릭 설정 필수
- int rowNum => " 몇 개 " 나오는지도 알수 있다.
// rs.next() 가 if 일지 while일지 구분할때 했던
// 한 개인지, 여러개 인지 판단해주는 거다.
// 그뿐아니라 int 라서 여러개 가 아닌 구체적인 "몇개 " 라는 정보가 담겨있다.
selectAll

selectAll의 쿼리 구문이 세가지로 나뉘어져 있다.
public List<BoardVO> selectAll(BoardVO bVO) {
// selectOne 일때는 // 하나는 .queryForObject
// selectAll 일때는 // 여러 개는 .query 를 사용
List<BoardVO> data = new ArrayList<BoardVO>(); // 담을 배열을 만들어서
Object[] args = { bVO.getSearchContent() }; // input으로 들어갈 인자가 있다면
if(bVO.getSearchCondition() == null) {
data = jdbcTemplate.query(selectAll, new BoardRowMapper());
}
else if(bVO.getSearchCondition().equals("TITLE")) {
data = jdbcTemplate.query(selectAll_TITLE, args, new BoardRowMapper());
}
else if(bVO.getSearchCondition().equals("WRITER")) {
data = jdbcTemplate.query(selectAll_WRITER, args, new BoardRowMapper());
}
return data;
input의 인자가 없다면 args 생략도 가능하다 !!
728x90
반응형