MyBatis

10
MyBatis ㅇ ㅇㅇㅇ ㅇㅇㅇㅇ (dispatcher-servlet.xml) <?xml version="1.0" encoding="UTF-8"?> <!– 기기 기기 기기 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="/WEB-INF/ MapperConfig.xml" /> </bean> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean> ㅇ dispatcher-servlet.xml ㅇ MyBatis ㅇ ㅇㅇㅇㅇ ㅇㅇ ㅇㅇ ㅇㅇ (SqlSessionFactoryBean / SqlSessionTemplate) ㅇ MyBatis ㅇㅇ XML ㅇㅇㅇ ㅇㅇ ㅇㅇ

description

MyBatis. ㅇ 스프링 설정파일 (dispatcher-servlet.xml). < bean id=" sqlSessionFactory " class=" org.mybatis.spring.SqlSessionFactoryBean "> < property name=" dataSource " ref=" dataSource " /> - PowerPoint PPT Presentation

Transcript of MyBatis

Page 1: MyBatis

MyBatis

ㅇ 스프링 설정파일 (dispatcher-servlet.xml)<?xml version="1.0" encoding="UTF-8"?>

<!– 기본 설정 생략 -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="/WEB-INF/MapperConfig.xml" /> </bean>

<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean>

ㆍ dispatcher-servlet.xml 에 MyBatis 를 사용하기 위한 설정 선언 (SqlSessionFactoryBean / SqlSessionTemplate)

ㆍ MyBatis 설정 XML 파일의 위치 지정

Page 2: MyBatis

MyBatis

ㅇ 스프링 설정파일 (dispatcher-servlet.xml)<?xml version="1.0" encoding="UTF-8"?>

<!– 기본 설정 생략 -->

<bean id="memberDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value=“edu.spring.board.dao.MemberDao" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> <property name="sqlSessionTemplate" ref="sqlSessionTemplate" /> </bean>ㆍ Spring Jdbc Template / iBatis Template 은 Dao 클래스에서 직접 Query 가 작성되어 있는 XML 파일을 호출하였지만

MyBatis 는 XML 이 Dao 클래스 ( 인터페이스 ) 를 구현하는 방식으로 사용 Dao 클래스 내부에 Query 를 호출하는 구문이 없음

ㆍ Dao 를 모두 Bean 으로 등록해야 하는 번거로움 .. ( 다른 구현 방식도 가능 )

Page 3: MyBatis

MyBatis

ㅇ MyBatis 설정 파일 (MapperConfig.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>

<settings> <setting name="mapUnderscoreToCamelCase" value="true" /></settings>

<typeAliases> <typeAlias alias="String" type="java.lang.String" /></typeAliases>

<mappers> <mapper resource="edu/spring/board/dao/MemberDao.xml" /></mappers>

</configuration>

ㆍ MyBatis 설정 XML

ㆍ옵션 지정

ㆍ사용할 Query (SqlMap) 파일의 위치를 지정

MyBatis 실행시 적용될 옵션 선언

사용할 클래스 단축명으로 미리 지정

각 sqlMap 파일의 위치 지정

Page 4: MyBatis

MyBatis

ㅇ MyBatis Sql Map 파일 ( 지정 파일명 .xml)<?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=“edu.spring.board.dao.MemberDao">

<select id="selectMember" parameterType="java.util.Map" resultType="java.util.Map"> // Query </select>

<insert id="insertMember" parameterType="edu.spring.board.dao.MemberDto"> // Query </insert>

</mapper>

select / insert / update / delete업무 성격에 따라 엘리먼트 및 SQL 문 작성

iBatis 는 namespace 가 선택사항 이지만MyBatis 에서는 필수사항구현할 Dao 클래스를 지정

Page 5: MyBatis

MyBatis

ㅇ MyBatis Sql Map 파일 ( 지정 파일명 .xml)

- select

<select id="selectMember" resultType="java.util.Map" parameterType="java.util.Map"> SELECT ID, PW, NAME, GRADE FROM MEMBER WHERE 1 = 1 AND ID = #{id}</select>

ㆍ조회시 사용하는 태그

ㆍ조회 결과를 어떤 형태로 받을 것인지 resultType 과 조회시 입력하는 데이터가 어떤 형태인지 parameterType 을 지정해야 됨

ㆍ입력되는 데이터는 parameterType 에 저장된 key 를 #{} 기호를 사용

ex) Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap(“inputId”, “seorab”); 위와 같이 입력된 클래스를 parameterType 으로 지정한 경우 #{inputId} 로 사용

Page 6: MyBatis

MyBatis

ㅇ MyBatis Sql Map 파일 ( 지정 파일명 .xml)

- insert

<insert id=“insertMember" parameterType="java.util.Map"> INSERT INTO MEMBER VALUES ( #{id}, #{pw}, #{name}, #{grade}, DATE_FORMAT(NOW(), '%Y%m%d%H%i%S') )</select>

ㆍ삽입시 사용하는 태그

ㆍ입력하는 데이터가 어떤 형태인지 parameterType 을 지정해야 됨

ㆍ삽입된 결과는 항상 Integer 형태로 반환 resultType 사용 불가

Page 7: MyBatis

MyBatis

ㅇ MyBatis Sql Map 파일 ( 지정 파일명 .xml)

- update

<update id=“updateMember" parameterType="java.util.Map"> UPDATE MEMBER SET ID = #{id}, PW = #{pw}, NAME = #{name}, GRADE = #{grade} , ACCEPT_DATE = DATE_FORMAT(NOW(), '%Y%m%d%H%i%S') WHERE ID = #{id}</update>

ㆍ수정시 사용하는 태그

ㆍ입력하는 데이터가 어떤 형태인지 parameterType 을 지정해야 됨

ㆍ수정된 결과는 항상 Integer 형태로 반환 resultType 사용 불가

Page 8: MyBatis

MyBatis

ㅇ MyBatis Sql Map 파일 ( 지정 파일명 .xml)

- delete

<delete id=“deleteMember" parameterType="java.util.Map"> DELETE FROM MEMBER WHERE ID = #{id}</update>

ㆍ삭제시 사용하는 태그

ㆍ입력하는 데이터가 어떤 형태인지 parameterType 을 지정해야 됨

ㆍ삭제된 결과는 항상 Integer 형태로 반환 resultType 사용 불가

Page 9: MyBatis

MyBatis

ㅇ MyBatis Sql Map 파일 ( 지정 파일명 .xml)

- Dynamic SQL

<select id="selectMember" resultType="java.util.Map" parameterType="java.util.Map"> SELECT ID, PW, NAME, GRADE FROM MEMBER WHERE 1 = 1 <if test=“id != null and id == ‘’”> AND ID = #{id} </if></select>

ㆍ조건문을 지정할때 사용하는 태그

ㆍ select / insert / update / delete 모든 태그 내부에 지정 가능

ㆍ문법 : http://mybatis.github.io/mybatis-3/ko/ 참조

Page 10: MyBatis

MyBatis

ㅇ MyBatis 사용

public interface MemberDao { public int insertMember(MemberDto memberDto); public List<Map<String, Object>> selectMember(Map<String, Object> paramMap);}

ㆍ Dao 인터페이스로 선언

ㆍ Service 에서 Dao 를 호출하면서 Sql Map XML 과 자동 매핑

- Dao 클래스

@Servicepublic class MemberService { @Autowired private MemberDao memberDao;

public boolean join(MemberDto memberDto) { int result = memberDao.insertMember(memberDto); return result > 0 ? true : false; } …. 생략 … .

- Service 클래스