MyBatis

허준기·2023년 12월 26일
1

스프링

목록 보기
4/7

MyBatis

객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 하도록 도와주는 개발 프레임워크. 
JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거.
MyBatis에서는 프로그램에 있는 SQL 쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가짐

목적

데이터베이스 쿼리프로그래밍 언어 코드를 분리하여 유지보수성생산성을 높이는 것

장점

  1. 유연성 : SQL 쿼리 직접 작성, 매우 유연, 동적 쿼리 작성
  2. 간결성 : SQL 쿼리와 프로그래밍 언어 코드를 분리 → 코드가 간결해져 유지보수에 용이
  3. 성능 : 캐시 기능을 제공하여 DB 연산 속도를 높임
  4. 다양한 DB 지원

동적 쿼리 : 실행 시점에 조건에 따라 SQL 쿼리를 동적으로 생성 → 검색 조건이나 결과값 등이 동적으로 변화할 때 유용하게 사용

구성

  1. MyBatis 환경설정 파일(SqlSessionConfig.xml) : MyBatisJDBC 코드를 실행하는데 필요한 전반에 걸친 세팅
  • TypAlias 설정 : 사용할 모델 클래스에 대한 이름 설정 <typeAlias>

  • DB 연동을 위한 설정 : DataBase에 어떻게 접속할 것인지에 대한 설정 <environment>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="com.mysql.jdbc.Driver"/> // mysql 드라이버
   <property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/> // mysql 사용
   <property name="username" value="username"/> // 아이디 
   <property name="password" value="password"/> // 비밀번호 
</bean>
  • Mapper 설정 파일 등록 : 매핑 설정이 어디있는지 <mapper>
@Mapper // 등록 
// 작성
public interface UserMapper {
   User getUserById(int id);
   void insertUser(User user);
   void updateUser(User user);
   void deleteUser(int id);
}
  1. Mapper 설정 파일(member.xml, company.xml) : SQL 문과 관련된 설정을 하는 파일 → MyBatis 설정파일에 등록을 해야 함
  • SQL문 등록 태그
    - SQL문 태그의 구성 요소 : Parameter, Result, SQL문 등록

    • SQL 태그 : insert, delete, update, select
    • 공통 SQL문 설정 태그 :
  • select 결과 처리 설정
    -

    Mapper 인터페이스와 연결될 XML 작성

    Mapper 속 메서드 별로 SQL 쿼리문 작성

  <user_mapper.xml>

<mapper namespace="com.example.mapper.UserMapper">
  <select id="getUserById" parameterType="int" resultType="com.example.model.User">
    SELECT * FROM users WHERE id = #{id}
  </select>

  <insert id="insertUser" parameterType="com.example.model.User">
    INSERT INTO users (name, email) VALUES (#{name}, #{email})
  </insert>

  < 다른 메서드들에 대한 쿼리도 추가 가능>
</mapper>

Mapper 사용
Mapper 인터페이스를 스프링 Bean으로 등록하고 주입받아 사용

  @Service
public class UserService {
   private final UserMapper userMapper;

   public UserService(UserMapper userMapper) {
       this.userMapper = userMapper;
   }

   // 유저 조회
   public User getUserById(int id) {
       return userMapper.getUserById(id);
   }

   // 유저 등록
   public void insertUser(User user) {
       userMapper.insertUser(user);
   }

   // ... 다른 메서드들
}

출처: https://ccomccomhan.tistory.com/130 [[꼼꼼한 개발자] 꼼코더:티스토리]

profile
나는 허준기

0개의 댓글