DAY_081[국비] 자바 웹프로그래밍 과정

Bona의 블로그 입니다.·2023년 1월 31일
0

국비과정

목록 보기
81/99

 🌞 Day 081 

  • Mybatis



 🌈 DB연결 2 

  • 어제에 이어서 view(하나만 가져오기), delete 만들기
  • template객체를 사용해서 DB작업하기

 🌙 BbsController 


 🌙 BbsDao implements IBbsDao 

  • template.queryForObject() : 하나만 리턴할 때 사용하는 메서드




 🌈 MyBatis 1 

  • MyBatis란?
    : Service와 JDBC사이에서 좀 더 편리하고 간단하게 DB를 다룰 수 있도록 도와주는 프레임워크
  1. 지금까지 쓰던 Dao를 인터페이스로 만든다.
  2. xml파일을 만들어서 DB작업을 할 SQL구문을 설정한다.

 🌙 설정 

 ⭐ 프로그램 생성시 Mybatis 추가 

 ⭐ application.properties 

  • 설정 추가
    # mybatis
    mybatis.mapper-locations=classpath:mybatis/mapper/**/**.xml
    (위 경로는 패키지 src/main/resources 안에 mybatis.mapper라는 패키지를 만든다.)

 ⭐ Dao 인터페이스 

  • 인터페이스를 만들고 Controller 혹은 Service에 @Autowired

 ⭐ xml파일 만들기 

  • 설정해 놓은 경로의 패키지 안에 xml 파일을 만들고 아래 코드 넣는다.

  • mapper 태그 안에 sql문을 작성한다.
    namespace : IUserDao의 경로를 이용하여 실제 인터페이스 파일 찾아서 연결

  • mapper 안의 태그들 (select, update, delete ...)
    select 등의 태그들에서는
    id = 메서드이름 or 인터페이스내 추상 메서드 이름
    resultType = 리턴받을 자료형(String이나 int는 생략)
    parameterType = 전달 인수의 자료형(String이나 int는 생략)
    태그들 사이 = sql문 작성 (끝에 ; 붙이지 말 것)

  • 실행결과를 resulyType 에 적힌 자료형 형태로 리턴하되 메서드의 리턴형에 맞춰서, 결과가 List 면 List 형태로 , 단일데이터면 단일데이터 Dto형태로 자동으로 리턴해줍니다


 🌙 IUserDao 

  • 인터페이스
    package com.ezen.g10.dao;

    import java.util.List;

    import org.apache.ibatis.annotations.Mapper;

    import com.ezen.g10.dto.UserDto;

    @Mapper
    public interface IUserDao {

        List<UserDto> getList();

    }




 🌈 My Batis 2 

  • 연습하기
  • Mybatis관련 코드만 정리함
    ( 전에 만든 프로젝트들의 코드 재활용한 부분은 제외 )

 🌙 BbsController 

  • Service를 사용하지 않아도되는 간단한 작업들이라서 controller에서 바로 dao인터페이스를 autowired해서 사용

 🌙 interface IBbsDao 

  • xml파일에서 참고할 인터페이스에는 @Mapper 어노테이션을 붙여야 한다.

 🌙 xml에 전달 인수 설정 

  • parameterType : 전달 인수 자료형

  • sql문 안에 전달 인수 넣기

    • 객체를 전달 받았을 때 : #{변수명}
    • String, int 등 : #{param1}, #{param2}, #{param3}
      (전달 인수 순서대로 번호)




 🌈 Transaction 

  • 트랜젝션
    : 하나이상의 데이터베이스 작업을 한단위로 묶어서 하나의 실행단위로 정의된 것을 트랜잭션이라고 한다

  • 트랜잭션 하나가 모두 다 실행이 되어 완료되면 commit 이라는 명령으로 작업을 완료하고, 중간에 에러가 발생하여 트랜잭션을 취소하고자 한다면 rollback 이라는 명령으로 취소한다


 🌙 Controller 


 🌙 Service 

  • PlatformTransactionManager, TransactionDefinition
    => TransactionTemplate




 🌈 게시판 만들기 

  • MyBatis 사용

 🌙 Controller 

  • MemberController, BoardController 생성
  • MeberController에 로그인까지 작업

 🌙 Dto 

  • MemberVO, BoardVO, Paging 생성
  • Paging의 경우 @Data붙이면 .setTotalcount가 자동으로 생성되므로 paing()메서드를 넣을 수 없다. 따라서 paging메서드를 private에서 public으로 바꾸고 totalcount를 세팅한 다음 paging메서드를 직접 호출해서 사용한다.

 🌙 Dao 

  • IMemberDao, IBoardDao 인터페이스 생성

 🌙 Service 

  • MemberService, BoardService 생성





profile
제가 공부하고 공유하고 싶은 글을 올리고 있습니다.

0개의 댓글