MyBatis 의 정체는?

Structure of Knowledge·2021년 1월 20일
0

Spring MVC Exercise in BIT

목록 보기
12/19
post-thumbnail

MyBatis는 FrameWork 다.

기능

  1. SQL문을 매핑하면 DB에서 데이터를 가져온다.(DAO 인터페이스를 구현할 필요가 없어진다.)
  2. ......

초기설정

  1. pom.xml에 MyBatis를 등록한다.

  2. root-context.xml 에서 객체를 생성해준다.(Bean태그는 id를 이름으로 하는 객체를 생성한다, 그 안의 property태그는 걍 멤버변수라고 생각하자)

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"destroy-method="close">
	<constructor-arg ref="hikariConfig" />
</bean>		
	
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
	<property name="configLocation" value="classpath:/mybatis-config.xml"/>
</bean>

<context:component-scan base-package="sdo.md.mapper"/>
<mybatis-spring:scan base-package="sdo.md.mapper"/>

 위의 bean태그는 히카리라이브러리(DBCP)에서 만들어준 DBCP객체이고, 밑의 bean태그는 MyBatis의 객체이다. MyBatis의 객체는 DBCP객체를 프로퍼티로 쓴다.(당연히 DB에서 데이터를 가져와야하니까)
 밑의 프로퍼티는 mybatis-config.xml의 위치를 지정한다

  가장 밑의 2개의 태그는 Spring이 MyBatis에서 쓰이는 java, xml 을 찾는 패키지를 지정한다. 단, mybatis-spring 태그는 root-context.xml의 NameSpace탭에서 추가해야 사용할 수 있다.

  1. src/main/resources/mybatis-config.xml을 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <typeAliases>
   	   <typeAlias alias="Address" type="sdo.md.domain.Address"/>
   	   <typeAlias alias="Board" type="sdo.md.domain.Board"/>
   	   
   </typeAliases>
   <mappers>
   	   <mapper resource="sdo/md/mapper/AddressMapper1.xml"/>
   	   <mapper resource="sdo/md/mapper/BoardMapper.xml"/>
   </mappers>
</configuration>

typeAliase태그는 DTO객체를 매퍼.xml에서 간편하게 사용할 수 있도록 알리아스를 지정하는 태그

mapper태그는 mybatis에서 사용할 mapper.xml을 지정하는 태그. mapper.xml은 src/main/resources/밑에 만들어준다. (mapper.xml은 DAO 클래스의 역할을 한다.)

사용

  1. src/main/resources/ 에 패키지를 만들어, SQL문 매핑정보를 담은 Mapper.xml을 작성한다.(== DAO 구현 클래스)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="sdo.md.mapper.AddressMapper1">
	<select id="list" resultType="Address">
 		 select * from ADDRESS order by SEQ desc
	</select>
	
	<insert id="insert" parameterType="Address">
		insert into ADDRESS values(ADDRESS_SEQ.nextval, #{name}, #{addr}, SYSDATE)
	</insert>
	
	<delete id="delete" parameterType="long">
	    delete from ADDRESS where SEQ= #{seq}
    </delete>
</mapper>

namespace속성은 이 mapper.xml과 매핑될 mapper.java(인터페이스)를 의미한다.

package sdo.md.mapper;

import java.util.List;

import sdo.md.domain.Address;

public interface AddressMapper1 {
	List<Address> list();
	void insert(Address address);
	void delete(long seq);
}
  1. src/main/java/ 에 패키지를 만들어, Mapper.xml에 대한 인터페이스를 작성한다.(== DAO 인터페이스)
  2. Service에서 사용한다.(DAO를 직접 작성하든, MyBatis를 이용하든 상관없음)
profile
객체와 제어, 비전공자 개발자 되기

2개의 댓글

comment-user-thumbnail
2021년 1월 21일

이거 따라했더니 에러나는데 책임지시죠

1개의 답글