마트철수
[050] 페이지네이션 + TodoApp 구현하기 본문
2024.07.18(목)
MySQL 7일차 (마지막)
TodoApp 제작하면서 DAO에 대해 한 차례 더 복습해 볼 수 있었다.
코드를 구현하면서 불편했던 점에 대해 생각해보라 하셨는데,
그 부분을 Spring으로 해결 가능한 부분인 것 같다.
이것이 MySQL이다
PART01 MySQL 설치 및 DB 구축과정 미리 실습하기
- CH01 DBMS 개요와 MySQL 소개
- CH02 MySQL 설치
- CH03 MySQL 전체 운영 실습
PART02 MySQL 기본
- CH04 데이터베이스 모델링
- CH05 MySQL 유틸리티 사용법
- CH06 SQL 기본
- CH07 SQL 고급
PART03 MySQL 고급
- CH08 테이블과 뷰
- CH09 인덱스
- CH10 스토어드 프로그램
- CH11 전체 텍스트 검색과 파티션
ScoulaTodo_Pagination
페이지네이션 (Pagination)
페이지네이션의 정의
- 여러 데이터 목록을 페이지 단위로 나누어 보여주는 기술.
- 적용 대상: 목록 보기, 검색 결과 등.
페이지네이션 구현
- limit 값: 한 페이지 당 표시할 데이터 건수.
- offset 값: 현재 페이지를 기반으로 계산된 값.
예시
- 한 페이지에 10개의 데이터를 표시하고 3번째 페이지를 보려면:
SELECT * FROM table_name LIMIT 10 OFFSET 20;
- 여기서 OFFSET 20은 (현재 페이지 - 1) * limit 값으로 계산됨.
그리드 형태 페이지네이션
- 카드 형태로 데이터를 보여주는 경우 (예: 유튜브)
추가자료: Context
Context의 개념
- 객체의 생성과 배정을 중앙에서 관리하는 방법.
- 문제점 해결: 의존 객체를 직접 생성하지 않고 Context를 통해 관리.
private Map<Class, Object> map;
이전 방식
- 직접 객체 생성: UserDao dao = new UserDaoImpl();
변경된 방식
- Context를 이용한 객체 생성: UserDao dao = Context.getBear(UserDao.class);
- Context가 UserDao의 구현체를 관리하고 제공함.
Singleton 패턴 효과
- Context를 통해 얻는 객체는 동일한 인스턴스.
- 여러 번 호출해도 동일한 객체 반환.
금일 수업은 실습 위주로 개념 정리는 여기까지 하겠음.
실습: TodoApp
TodoDao.java
package org.scoula.todo.dao;
import org.scoula.todo.domain.Todo;
import java.util.ArrayList;
import java.util.List;
public class TodoDao {
//private 생성자와 getInstance로 객체 리턴 => 싱글톤 패턴
private static TodoDao instance = new TodoDao();
public static TodoDao getInstance(){
return instance;
}
private List<Todo> list;
private TodoDao(){
list = new ArrayList<>();// 임시 테스트 데이터 구성
for(int i = 0; i < 10; i++){
// 빌더 사용해서 열개의 객체 생성 후 리스트에 추가
Todo todo = Todo.builder()
.title("Todo "+i)
.description("Description "+i)
.done(false)
.build();
list.add(todo);
}
}
// 전체 할일 목록 가져오는 메소드 (Read)
public List<Todo> getList(){
return list;
}
// 해당 아이디의 할일 가져오는 메소드 (Read)
public Todo getTodo(int id){
for(Todo todo: list){
// 리스트를 돌면서 받아온 id 값과 일치하는 todo 찾기
if(todo.getId() == id){
return todo;
}
}
return null;
}
// 리스트에 새로운 todo 추가하는 메소드 (Create)
public void add(Todo todo){
list.add(todo);
}
// 해당 todo를 새로운 값으로 변경해주는 메소드(Update)
public void update(Todo todo){
for(int i =0; i < list.size(); i++){
if(todo.getId() == list.get(i).getId()){
// 리스트를 돌면서 id를 비교해서 해당 id의 todo를 새로운 todo로 변경
list.set(i, todo);
}
}
}
// 해당 아이디의 todo를 리스트에서 삭제해주는 메소드 (Delete)
public void delete(int id){
for(int i = 0; i < list.size(); i++){
// 리스트에서 해당 todo를 찾아서 삭제해준다
if(list.get(i).getId() == id){
list.remove(i);
return;
}
}
}
}
'KB IT's Your Life > 교육' 카테고리의 다른 글
| [052] MongoDB를 이용한 프로그래밍 (4) | 2024.07.22 |
|---|---|
| [051] BFS, DFS (알고리즘 핵심) (0) | 2024.07.19 |
| [049] MySQL: 인덱스 (+ScoularTodo 제작) (1) | 2024.07.17 |
| [048] 뷰&정규화 과정 (+JDBC 프로그래밍 중요코드) (1) | 2024.07.16 |
| [047] 트랜잭션, JDBC 프로그래밍 (0) | 2024.07.15 |