12/05 MyBatis

yookyungmin·2022년 12월 5일
0

MyBatis : Persistance Layer Framework

  • 난이도가 낮아서 사용하기 쉽다
  • 동적쿼리를 운영하는 데 편하다
  • 자바, 파이썬에서도 사용 가능 언어의 구애를 받지 않는다 / 크로스 플랫폼 가능
  • 코드와 쿼리의 분리
  • 위의 두가지 특성에 따라 이식성이 뛰어남
  • 테이블 하나당 xml 문서가 하나씩 만들어진다

Spring Data JPA

  • 진입장벽이 높음(난이도 높음)
  • MyBatis 대비 더 강력하고 다양한 기능제공
  • Obejct Realtion Mapping

mybatis를 사용하기 위해선 spring jdbc + mybatis + mybatis spring


mapper.xml의 저장경로 src/main/resources/mybatis

	<bean id ="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="mapperLocations" value="classpath:/mybatis/*-mapper.xml"></property>
	</bean>
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"> </constructor-arg>
	</bean>
    root-context.xml에 넣어준다


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <mapper namespace="Message">
  </mapper>

mybatis가변인자를 지원하지 않는다 dao의 매개변수가 여러개가 들어온다면

prefixOverrides ="and"
and 를 지우겠다
mybatis에서 복잡한 검색 trim사용

<select id="selectByMultiCon"
		resultType="kh.spring.dto.MessageDTO">
		select * from message
		
		<trim prefix="where" prefixOverrides="and">
		    <!-- prefixOverrides : 접두사를 무효화 시키다. 
      맨 앞이 and 면 and 를 무효화 시키겠다. -->
			<if test="writer !=null">
				writer like '%'||#{writer}||'%'
			</if>
			<if test="message !=null">
				and message like '%'||#{message}||'%'
			</if>
		</trim>
		     <!-- MyBatis에서는 trim(다듬다) 라는 기능 제공. trim 안에 텍스트가 있어야 동작함 -->
	</select>

0개의 댓글