코딩 노트
데이터베이스 - 수정 본문
데이터를 DTO로 묶어서 보는 능력과 DTO와 ListDto를 구별하는 능력이 필요하다.
수정과 삭제는 반환형이 boolean이고 등록은 반환형이 void이다.
JDBC - 수정(Update)
- no를 이용해서 name과 type을 바꾼다.
- 적용된 행이 있는지 없는지를 알아야 한다.
//U(수정) 메소드
//수정이 됐는지 꼭 확인을 하기 위해 Boolean
public boolean update(PocketmonDto dto) {
String sql = "update pocketmon set name=?, type=? where no=?";
Object[] data = {
dto.getName(), dto.getType(), dto.getNo()
};
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
int result = jdbcTemplate.update(sql, data);
// if (result > 0)return true; //result가 0보다 크면 참
// else return false; //아니면 거짓을 반환해라
return result > 0; //result가 0보다 큰지 판정해서 반환해라
}
public static void main(String[] args) {
// Pocketmon 정보수정
// 데이터 준비 - DTO
PocketmonDto dto = new PocketmonDto();
dto.setNo(3);
dto.setName("이상해곷");
dto.setType("독");
//DB처리
PocketmonDao dao = new PocketmonDao();
boolean result = dao.update(dto);
if(result) {
System.out.println("변경 완료");
} else{
System.out.println("존재하지 않는 몬스터 번호");
}
}
(Q) 도서 프로그램 수정(가격/ 도서명, 저자, 출판사)
//수정(도서가격)
public boolean updateBookPrice(BookDto dto) {
String sql = "update book set book_price=? where book_id =?";
Object[] data = {dto.getBookPrice(), dto.getBookId()};
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
int result = jdbcTemplate.update(sql,data);
return result > 0;
return jdbcTemplate.update(sql,data) > 0; //위 코드를 한 줄로 줄인 것
}
//수정(도서명, 저자, 출판사)
public boolean updateBookInfo(BookDto dto) {
String sql = "update book set book_title=?, book_author=?, book_publisher=? where book_id=?";
Object[] data = {dto.getBookTitle(), dto.getBookAuthor(), dto.getBookPublisher(),
dto.getBookId()};
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
return jdbcTemplate.update(sql,data) > 0;
}
}
public static void main(String[] args) {
// 도서가격을 수정하는 프로그램을 구현
// 메소드 이름은 updateBookPrice
BookDto dto = new BookDto();
dto.setBookId(1);
dto.setBookPrice(20.20f);
BookDao dao = new BookDao();
boolean result = dao.updateBookPrice(dto);
if (result) {
System.out.println("도서 가격이 수정 완료되었습니다.");
} else {
System.out.println("등록되지 않은 도서입니다.");
}
}
}
public static void main(String[] args) {
// 도서명, 저자, 출판사를 수정하는 프로그램을 구현
// 메소드 이름은 updateBookInfo
BookDto dto = new BookDto();
dto.setBookId(1);
dto.setBookTitle("abc");
dto.setBookAuthor("mary");
dto.setBookPublisher("abcChoco");
BookDao dao = new BookDao();
boolean result = dao.updateBookInfo(dto);
if (result) {
System.out.println("도서 정보가 수정이 완료되었습니다.");
} else {
System.out.println("등록되지 않은 도서입니다.");
}
}
}
JDBC - 삭제(Delete)
- delete 처리를 위해서는 데이터가 1개 필요하다.
= DTO를 쓰기 애매하다...
- 삭제 메소드는 Primary key(기본키)를 이용하여 하나씩 지운다.
- 조건에 따라서 삭제가 안될 수 있기 때문에 결과를 반환해야 한다.
//D(삭제) 메소드
//- 삭제 메소드는 Primary key(기본키)를 이용하여 하나씩 지운다.
//- 조건에 따라서 삭제가 안될 수 있기 때문에 결과를 반환해야 한다.
public boolean delete(int no) {
String sql = "delete pocketmon where no=?";
Object[] data = {no};
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
return jdbcTemplate.update(sql,data) > 0;
}
public static void main(String[] args) {
// 포켓몬스터 삭제 프로그램
//데이터가 하나밖에 없기 때문에 DTO가 필요 없다.
//데이터
int no = 43;
//DB처리
PocketmonDao dao = new PocketmonDao();
boolean result = dao.delete(no);
if(result) {
System.out.println("포켓몬스터 정보 삭제 완료");
} else {
System.out.println("존재하지 않는 포켓몬스터 번호");
}
}
JDBC - 조회
- 여러 개의 데이터가 나오는 구문이다.
- 자바에서는 List<DTO> 형태로 취급한다.
- 조회하려면 Mapper가 필요하다.
//Mapper는 외부에 필드로 생성
private PocketmonMapper mapper = new PocketmonMapper();
//R(조회) 메소드
public List<PocketmonDto> selectList(){
String sql = "select * from pocketmon";
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
return jdbcTemplate.query(sql, mapper);
}
public static void main(String[] args) {
// 저장된 포켓몬스터를 모두 불러오겠다.
PocketmonDao dao = new PocketmonDao();
List<PocketmonDto> list = dao.selectList();
//list를 활용해서 하고 싶은 작업을 하면 된다.(반복문, 조건, 출력)
System.out.println("조회 결과 수 : " + list.size());
for(PocketmonDto dto : list) {
System.out.println(dto);
}
}
JDBC - 상세
- Primary key를 이용하여 하나의 결과만 나오는 구문이다.
- 자바에서는 DTO 형태로 취급한다.
- 조회하려면 Mapper가 필요하다.
//R(상세) 메소드
//public PocketmonDto selectOne(PocketmonDto dto){
public PocketmonDto selectOne(int no) {
String sql = "select * from pocketmon where no=?";
Object[] data = {no};
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
List<PocketmonDto> list = jdbcTemplate.query(sql, mapper,data);
// if (list.isEmpty()) {
// return null;
// } else {
// return list.get(0);
// }
return list.isEmpty() ? null : list.get(0);
}
public static void main(String[] args) {
// 포켓몬스터 번호를 이용하여 상세조회
//데이터
int no = 1000;
//처리
PocketmonDao dao = new PocketmonDao();
PocketmonDto dto = dao.selectOne(no);
//출력
if(dto == null) {
System.out.println("찾으시는 번호의 몬스터가 없습니다.");
} else {
System.out.println(dto.getNo());
System.out.println(dto.getName());
System.out.println(dto.getType());
}
}
(Q) 도서 목록 조회
//Mapper
private BookMapper mapper = new BookMapper();
//조회(도서 목록)
public List<BookDto> selectList(){
String sql = "select * from book order by book_id asc";
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
return jdbcTemplate.query(sql, mapper);
}
public static void main(String[] args) {
// 도서 목록 출력 프로그램
//데이터 없음
//DB처리
BookDao dao = new BookDao();
List<BookDto> list = dao.selectList();
if(list.isEmpty()) {
System.out.println("등록된 도서가 없습니다.");
} else {
System.out.println("총 " + list.size() + "개의 도서가 존재합니다.");
for(BookDto dto : list) {
System.out.println(dto.getBookTitle()+"($" + dto.getBookPrice() + ")");
}
}
}
(Q) 탑앤 쿼리를 사용해 페이징 목록 조회
//일반 게시글 목록 조회
//Mapper
private BoardMapper mapper = new BoardMapper();
//조회(목록)
public List<BoardDto> selectList(){
String sql = "select * from board order by board_no desc";
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
return jdbcTemplate.query(sql, mapper);
}
//(심화) 페이징 목록 조회
public List<BoardDto> selectListByPage(int page){
int end = page * 10;
int begin = end - 9;
String sql = "select * from ("
+ "select rownum rn, TMP.* from("
+ "select * from board order by board_no desc"
+ ")TMP"
+ ") where rn between ? and ?";
Object[] data = {begin, end};
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
return jdbcTemplate.query(sql, mapper, data);
}
public static void main(String[] args) {
// 게시글 목록 출력 프로그램
//데이터
int page = 1;
//DB처리
BoardDao dao = new BoardDao();
List<BoardDto> list = dao.selectListByPage(page);
for(BoardDto dto : list) {
System.out.print("[" + dto.getBoardNo() + "] ");
System.out.println(dto.getBoardTitle());
}
}
(Q) 회원 목록 전체 조회(페이징 조회)
//Mapper
private MemberMapper mapper = new MemberMapper();
//회원 전체 목록 조회
public List<MemberDto> selectList(){
String sql = "select * from member";
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
return jdbcTemplate.query(sql, mapper);
}
//회원 페이징 목록 조회
public List<MemberDto> selectListByPage(int page, int size){
int end = page * size;
int begin = end - (size - 1);
String sql = "select * from ("
+ "select rownum rn, TMP.* from("
+ "select * from member order by member_id desc"
+ ")TMP"
+ ") where rn between ? and ?";
Object[] data = {begin, end};
JdbcTemplate jdbcTemplate = JdbcUtils.getJdbcTemplate();
return jdbcTemplate.query(sql, mapper, data);
}
public static void main(String[] args) {
//회원 전체 목록
MemberDao dao = new MemberDao();
List<MemberDto> list = dao.selectList();
for(MemberDto dto : list) {
System.out.println(dto.getMemberId());
}
}
public static void main(String[] args) {
//페이지 번호를 이용하여 회원 목록을 조회
int page = 1;
int size = 10;
MemberDao dao = new MemberDao();
List<MemberDto> list = dao.selectListByPage(page,size);
if(list.isEmpty()) {
System.out.println("표시할 항목이 없습니다.");
} else {
for(MemberDto dto : list) {
System.out.print(dto.getMemberId());
}
}
}
'Database' 카테고리의 다른 글
데이터베이스 외래키 (0) | 2023.08.01 |
---|---|
데이터베이스 조회 최종 형태2(product) (0) | 2023.07.24 |
데이터베이스 조회 최종 형태1(member) (0) | 2023.07.24 |
데이터베이스6 - 모듈화 (0) | 2023.07.24 |
데이터베이스5 - JDBC (0) | 2023.07.21 |