[Spring] MyBatis Spring

JOY·2023년 5월 2일
0

[Spring]

목록 보기
14/18
post-thumbnail

📌 MyBatis Spring

Spring에서 ORM을 쉽게 사용할 수 있도록 제공하는 lib

MyBatis를 사용하는 액세스 계층

MyBatis 주요 Component

  • MyBatis 설정파일(SqlMapConfig.xml)
    : VO 객체 정보 설정
  • SqlSessionFactoryBean
    : MyBatis 설정파일을 바탕으로 SqlSessionFactory 생성
    : Spring Bean으로 등록 (SqlSessionFactory를 bean으로 등록)
  • SQLSessionTemplate
    : SqlSession Interface를 구현, Thread에 안전
    : 핵심적인 역할을 하는 클래스
    : SQL 실행이나 트랜잭션 관리 실행
    : Spring Bean으로 등록
    : commit(), rollback(), insert(), delete(), selectOne, selectList()

SqlSessionFactoryBean과 SQLSessionTemplate 는 MyBatis Spring에서 제공하는 컴포넌트

  • MyBatisConfig File(webapp/WEB-INF/spring/MyBatis-context.xml)
	<!--  myBatis의 주요 컴포넌트 SqlSessionFactory 생성,   
   		Spring application context 안에서 MyBatis SqlSessionFactory 공유-->			
   <beans:bean id="sqlSessionFactory" 
   class="org.mybatis.spring.SqlSessionFactoryBean">
		<beans:property name="dataSource" ref="dataSource" />
		<beans:property name="mapperLocations" value="classpath:mapper/*Mapper.xml" /><!--  Mapper.xml 로끝나는 mapper모두 등록 -->
		<!--  -->
		<beans:property name="typeAliasesPackage" value="web.mvc.dto" /><!-- dto폴더안에있는 클래스들 별칭 자동만듦 - 클래스명의 첫글만 소문자!! -->
	   <!--  <beans:property name="configLocation" value="classpath:SqlMapConfig.xml"/> -->
	</beans:bean>
    
    <!-- SqlSessions 생성을 위해서는 SqlSessionFactory가 필요하기 때문에 생성자로 넘겨주어야한다. -->
  	<beans:bean id="sqlSession"
     class="org.mybatis.spring.SqlSessionTemplate">
		<beans:constructor-arg index="0" ref="sqlSessionFactory"/>
	</beans:bean>	

  • Spring Bean 설정파일 (beans.xml)
    : SqlSessionFactoryBean을 bean으로 등록할 때,
    DataSource 정보와 MyBatis Config 파일 정보, Mapping 파일 정보를 함께 설정한다.
    : SQLSessionTemplate을 bean으로 등록.

  • Mapping 파일(~.xml)
    : SQL문과 Mapping 설정

Tip) mapper.xml 자주 사용하는 Sql문 생성 후 include 태그를 통해 재사용 하는 방법

<mapper namespace="productMapper">
  	<!--sql문 id 설정-->
	<sql id="selectSql">	
		select code, name, price, detail
		from productlist
	</sql>
    
  	<!--전체 검색-->
    <select id="selectAll" resultType="productDTO">
		<include refid="selectSql"/> <!--생성해놓은 sql문 사용하기-->
	</select>
</mapper>

MVC기반의 MyBatis Spring 연동 library

pom.xml > Dependencies

profile
Just Do IT ------- 🏃‍♀️

0개의 댓글