DB(DataBase)

create table USER_SCHEDULE
(
		SCHEDULE_SEQ INTEGER not null
	,	SCHEDULE_ID VARCHAR(20) not null
	,	SCHEDULE_SDAY DATE not null
	,	SCHEDULE_EDAY DATE not null
	,	SCHEDULE_TITLE VARCHAR(256) not null
	,	SCHEDULE_CONTENT VARCHAR(2000)
)

나는 schedule을 관리 해주는
프로그램을 구성하기 위해서 6가지의 컬럼을 만들었다.

  • SCHEDULE_SEQ(시퀀스)
  • SCHEDULE_ID(사용자 아이디)
  • SCHEDULE_SDAY(등록날짜)
  • SCHEDULE_EDAY(종료날짜)
  • SCHEDULE_TITLE(제목)
  • SCHEDULE_CONTENT(내용)

Dto(scheduleDto)

@Data
public class scheduleDto {
    private int scheduleSeq;        //시퀀스
    private String scheduleId;      //사용자 아이디
    private Date scheduleSday;      //등록 날짜
    private Date scheduleEday;      //종료 날짜
    private String scheduleTitle;   //스케줄 제목
    private String scheduleContent; //스케줄 내용
}

데이터베이스와 애플리케이션 간의 데이터를
전송하는데 사용하기 위해서 scheduleDto를 만들고
DB에서 작성 했던 컬럼과 동일한 멤버 변수를 만들어 줬다.

Mapper(scheduleMapper)

<select id="getScheduleLsit"
            parameterType="com.study.commercesample.schedule.dto.scheduleDto"
     		resultType="com.study.commercesample.schedule.dto.scheduleDto">
        SELECT *
        FROM USER_SCHEDULE
        WHERE 1=1
    </select>

resultTyper값을 scheduleDto로 설정 해준다.
그 이유는 scheduleDto에 저장되어 있는 값을 찾아와서 출력해주어야 하기 때문이다.
쿼리를 실행 시켜 출력 했을때 출력된 값을 scheduleDto와 매핑하여 출력 해주려고
resultType의 값을 scheduleDto로 설정 하였다.

parameterType은 scheduleDto에 있는 데이터를 기반으로 쿼리가 실행되기때문에
parameterType은 scheduleDto으로 설정 하였다.

Dao(scheduleDao)

@Mapper
public interface scheduleDao {
    //스케줄 리스트
    public List<scheduleDto> getScheduleLsit(scheduleDto scheduledto);
}

@mapper 어노테이션 : @mapper 어노테이션은 단순히
'이것은 매퍼이다.'라는 것을 표시하기 위한 어노테이션 이다.
즉 Mybatis와 같은 데이터베이스와 연동하는 프레임워크
에 사용 되며 해당 인터페이스가 Mybatis의 매퍼 역할을 한다는 것을 나타낸다.

public List라는 반환 타입으로 getScheduleLsit를 만들었다.
해당 메서드가 호출되면 여러개의 'scheduleDto'객체를 담은 리스트를 반환 한다.

(scheduleDto scheduledto) 이 파라미터 값을 전달하는 이유는
외부에서 전달된 scheduleDto 객체를 활용해서 특정 스케줄 데이터를
조회하고 처리하기 위함 이다.getScheduleLsit 메서드를 호출 하려면
무조건 scheduleDto의 객체를 전달해야 한다.

Service(scheduleService)

@Service
public class scheduleService {

    @Autowired
    private scheduleDao scheduledao;
    @Autowired
    private SqlSession sqlSession;

    public List<scheduleDto> getScheduleService(scheduleDto scheduleDto) {
        scheduleDao scheduledao = sqlSession.getMapper(scheduleDao.class);
        List<scheduleDto> scheduleList = scheduledao.getScheduleLsit(scheduleDto);
        return scheduleList;
    }
}

@Autowired를 사용해서 scheduleDao, SqlSession 인스턴스 생성
sqlSession.getMapper(scheduleDao.class)를 사용해서
Mapper.xml에서 만든 쿼리를 scheduledao에 할당하여 반환 한다.
즉, Dao와 연결하는 역할을 한다고 생각하면 된다.

실제로는 scheduledao.getScheduleLsit(scheduleDto) 여기서 쿼리를
가져와서 할당 한다고 생각하면 편할 것이다.
scheduledao.getScheduleLsit(scheduleDto) 여기에 getScheduleLsit
라는 쿼리를 가져와서 List 타입의 변수에 할당하고 return 한다.

Controller(scheduleController)

@Controller
@RequestMapping("/schedule")
public class ScheduleController {

    @Autowired
    scheduleService scheduleService;
    @RequestMapping("/scheduleList")
    public String scheduleVList(Model model) {
        scheduleDto scheduleDto = new scheduleDto();
        List<scheduleDto> scheduleList = scheduleService.getScheduleService(scheduleDto);
        model.addAttribute("scheduleList",scheduleList);
        return "schedule/scheduleList";
    }
}

@Autowired를 사용해서 객체를 생성 해준다
scheduleService.getScheduleService(scheduleDto)
Service에서 Dao와 Mapper가 연결되어 있는 getScheduleService메서드를
호출해서 실직적인 쿼리의 값을 가져오는 역할을 한다.
그 호출한 값을 가져와서 model 객체로 key와 value를 정해서 view에 뿌려준다.

profile
뚱이아빠의 개발자도전기

0개의 댓글

Powered by GraphCDN, the GraphQL CDN