0. Mybatis Plugin 다운받기 (사전준비)
[Help] - [Eclipse Marketplace] 에서
Mybatipse 를 검색해 설치한다.
1. board-mapping.xml 만들기
src/main/resources 밑에 mappings 패키지를 하나 생성하고
[New] - [Other] - [Mybatis Mapper] 로 board-mapping.xml 을 만들어 준다.
내용은 다음과 같다.
자유롭게 sql문을 변경해 사용하면 된다.
<?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="BoardDAO"><resultMap type="board" id="boardResult"><id property="seq" column="SEQ"/><result property="title" column="SEQ"/><result property="writer" column="WRITER"/><result property="content" column="CONTENT"/><result property="regDate" column="REGDATE"/><result property="cnt" column="CNT"/></resultMap><insert id="insertBoard">insert into board(seq, title, writer, content)value((select nvl(max(seq),0)+1 from board), #{title}, #{writer}, #{content})</insert><update id="updateBoard">update voard set title=#{title}, content=#{content} where seq=#{seq}</update><delete id="deleteBoard">delete board where seq=#{seq}</delete><select id="getBoard" parameterType="board" resultMap="boardResult"><![CDATA[select *from boardwhere seq <= #{seq}]]></select><select id="getBoardList" resultType="board">select * from boardwhere title like '%'||#{searchKeyword}||'%'order by seq desc</select></mapper>
2. sql-map-config.xml 을 만들어준다.
여기서는 mapper 대신 configuration을 써줌에 유의하자.
<?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><!-- Alias 설정 --><typeAliases><typeAlias alias="board" type="com.kt.jigyeong.board.BoardVO"/></typeAliases><!-- Sql Mapper 설정 --><mappers><mapper resource="mappings/board-mapping.xml"></mapper></mappers></configuration>
3. applicationContext.xml 에 아래 구문을 추가하여 Datasource도 setter 인젝션으로 추가하고, sql-map-config.xml도 setter 인젝션으로 추가하자.
<!-- Mybatis -->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:sql-map-config.xml"></property>
</bean>
4. DAO 클래스를 만들어서 호출해다 쓰면 된다.
@Autowired를 붙이면 스프링 컨테이너가 setSqlSessionFactory() 메소드를 자동으로 호출한다.
이때 applicationContent 파일에 <bean> 등록된 SqlSessionFactoryBean 객체를 인자로 받아 부모인 SqlSessionDaoSupport에 setSqlSessionFactory() 메소드로 설정해준다.
package com.kt.jigyeong.board.impl;import java.util.List;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.support.SqlSessionDaoSupport;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import com.kt.jigyeong.board.BoardVO;@Repositorypublic class BoardDAOMybatis extends SqlSessionDaoSupport{@Autowiredpublic void setSqlSessionFactory (SqlSessionFactory sqlSessionFactory) {super.setSqlSessionFactory(sqlSessionFactory);}// CRUD 기능의 메소드 구현// 글 등록public void insertBoard(BoardVO vo) {System.out.println("===> Mybatis 로 insertBoard() 기능 처리");getSqlSession().insert("BoardDAO.insertBoard", vo);}// 글 수정public void updateBoard(BoardVO vo) {System.out.println("===> Mybatis 로 updateBoard() 기능 처리");getSqlSession().update("BoardDAO.updateBoard", vo);}// 글 삭제public void deleteBoard(BoardVO vo) {System.out.println("===> Mybatis 로 deleteBoard() 기능 처리");getSqlSession().delete("BoardDAO.deleteBoard", vo);}// 글 상세 조회public BoardVO getBoard(BoardVO vo) {System.out.println("===> Mybatis 로 getBoard() 기능 처리");return (BoardVO) getSqlSession().selectOne("BoardDAO.getBoard", vo);}// 글 목록 조회public List<BoardVO> getBoardList(BoardVO vo){return getSqlSession().selectList("BoardDAO.getBoard", vo);}}
5. Service에서 DAO를 호출하여 사용한다.
package com.kt.jigyeong.board.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.kt.jigyeong.board.BoardService;import com.kt.jigyeong.board.BoardVO;import com.kt.jigyeong.common.LogAdvice;@Service("boardService")public class BoardServiceImpl implements BoardService{@Autowiredprivate BoardDAOMybatis boardDAO;private LogAdvice log;public void insertBoard(BoardVO vo) {boardDAO.insertBoard(vo);}public void updateBoard(BoardVO vo) {boardDAO.updateBoard(vo);}public void deleteBoard(BoardVO vo) {boardDAO.deleteBoard(vo);}public BoardVO getBoard(BoardVO vo) {return boardDAO.getBoard(vo);}public List<BoardVO> getBoardList(BoardVO vo) {return boardDAO.getBoardList(vo);}}
'Back-end > Spring' 카테고리의 다른 글
Spring Framework 실행순서 (1) | 2019.03.22 |
---|---|
Received fatal alert: protocol_version -> [Help 1] 에러해결 (0) | 2019.03.21 |
Spring Legacy 새 프로젝트 생성하기 (환경설정) (0) | 2019.02.20 |
Eclipse에서 Spring 설치 (Spring Legacy) (0) | 2019.02.20 |
[Spring] 웹소켓 js파일 (0) | 2017.06.05 |