쌍용교육(JAVA)/Spring

쌍용교육 -JSP수업 84일차 - ch11_SpringMybatisAnnot(1)

구 승 2024. 6. 21. 16:41


root-context.xml 내용수정

<!-- mybatis 설정 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="typeAliasesPackage" value="kr.spring.board.vo"/> <!-- 알리아스 처리를 해준다? -->
	</bean>     	      
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="kr.spring.board.dao"/>
	</bean>

kr.spring.board.dao => BoardMapper

package kr.spring.board.dao;

import java.util.List;
import java.util.Map;

import kr.spring.board.vo.BoardVO;

public interface BoardMapper {
	public void insertBoard(BoardVO board);
	public int selectBoardCount();
	public List<BoardVO> selectBoardList(Map<String,Integer>map);
	public BoardVO selectBoard(int num);
	public void updateBoard(BoardVO vo);
	public void deleteBoard(int num);
}

 

BoardMapper.xml
0.00MB

 

 

 

SQL문이 짧으면 어노테이션을 쓰고 길면 XML을 쓰는게 좋다.

BoardMapper (SQL문이 짧을 때)

package kr.spring.board.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Select;

import kr.spring.board.vo.BoardVO;

public interface BoardMapper {
	public void insertBoard(BoardVO board);
	@Select("SELECT COUNT(*) FROM aboard") //SQL문이 짧으면 어노테이션을 쓰고 길면 XML을 쓰는게 좋다. 짧기 때문에 어노테이션 사용
	public int selectBoardCount(); //어노테이션을 쓰면 반환타입을 지정하지않아도 되고 보기에도 쉬움
	public List<BoardVO> selectBoardList(Map<String,Integer>map);
	public BoardVO selectBoard(int num);
	public void updateBoard(BoardVO vo);
	public void deleteBoard(int num);
}

BoardMapper.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="kr.spring.board.dao.BoardMapper">  <!-- 인터페이스 파일과 명칭을 같게 해야됨 --><!-- 이걸써야지 class 파일을 따로 만들지않아도 작동이 자동으로 연동되어 작동가능 -->
	<!-- 목록 -->
	<select id="selectBoardList" parameterType="map" resultType="boardVO">
		SELECT
		  *
		FROM (SELECT
				a.*,
				rownum rnum
			  FROM (SELECT
			  			*
			  		FROM aboard
			  		ORDER BY reg_date DESC)a)
		<![CDATA[
		WHERE rnum >=#{strat} AND rnum <=#{end}
		]]> 
	</select>
 </mapper>

kr.spring.board.service => BoardService

package kr.spring.board.service;

import java.util.List;
import java.util.Map;

import kr.spring.board.vo.BoardVO;

public interface BoardService {
	public void insertBoard(BoardVO board);
	public int selectBoardCount();
	public List<BoardVO> selectBoardList(Map<String,Integer>map);
	public BoardVO selectBoard(int num);
	public void updateBoard(BoardVO vo);
	public void deleteBoard(int num);
}

kr.spring.board.service => BoardServiceImpl

package kr.spring.board.service;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import kr.spring.board.dao.BoardMapper;
import kr.spring.board.vo.BoardVO;

@Service
@Transactional
public class BoardServiceImpl implements BoardService{

	@Autowired
	private BoardMapper boardMapper;
	
	@Override
	public void insertBoard(BoardVO board) {
	
		
	}

	@Override
	public int selectBoardCount() {
		
		return boardMapper.selectBoardCount();
	}

	@Override
	public List<BoardVO> selectBoardList(Map<String, Integer> map) {
		
		return boardMapper.selectBoardList(map);
	}

	@Override
	public BoardVO selectBoard(int num) {
		
		return null;
	}

	@Override
	public void updateBoard(BoardVO vo) {
		
		
	}

	@Override
	public void deleteBoard(int num) {
		
		
	}

}

BoardMapper.java 내용추가

	@Select("SELECT * FROM aboard WHERE num=#{num}")
	public BoardVO selectBoard(int num);

BoardServiceImpl

@Override
	public BoardVO selectBoard(int num) {
		
		return boardMapper.selectBoard(num);
	}

BoardMapper.xml 내용추가

<!-- 글쓰기 -->
	<insert id="insertBoard" parameterType="boardVO">
		INSERT INTO aboard(
			num,
			writer,
			title,
			passwd,
			content,
			reg_date)
		VALUES(
			aboard_seq.nextval,
			#{writer},
			#{title},
			#{passwd},
			#{content},
			SYSDATE)
	</insert>

BoardServiceImpl

@Override
	public void insertBoard(BoardVO board) {
		boardMapper.insertBoard(board);
		
	}

BoardMapper.java 내용추가

@Update("UPDATE aboard SET writer=#{writer},title=#{title},content=#{content} WHERE num=#{num}")
	public void updateBoard(BoardVO vo);
@Delete("DELETE FROm aboard WHERE num=#{num}")
	public void deleteBoard(int num);

BoardServiceImpl

@Override
	public void updateBoard(BoardVO vo) {
		boardMapper.updateBoard(vo);
		
	}
@Override
	public void deleteBoard(int num) {
		boardMapper.deleteBoard(num);
		
	}