목차
-
root-context.xml 내용수정
-
kr.spring.board.dao => BoardMapper
-
SQL문이 짧으면 어노테이션을 쓰고 길면 XML을 쓰는게 좋다.
-
BoardMapper (SQL문이 짧을 때)
-
BoardMapper.xml (SQL문이 길 때)
-
kr.spring.board.service => BoardService
-
kr.spring.board.service => BoardServiceImpl
-
BoardMapper.java 내용추가
-
BoardServiceImpl
-
BoardMapper.xml 내용추가
-
BoardServiceImpl
-
BoardMapper.java 내용추가
-
BoardServiceImpl

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);
}


'쌍용교육(JAVA) > Spring' 카테고리의 다른 글
쌍용교육 -JSP수업 83일차 - ch10_SpringMybatis(1) (0) | 2024.06.21 |
---|---|
쌍용교육 -JSP수업 82일차 - ch09_SpringJDBC(2) (0) | 2024.06.20 |
쌍용교육 -JSP수업 81일차 - ch09_SpringJDBC(1) (0) | 2024.06.19 |
쌍용교육 -JSP수업 81일차 - ch08_SpringMVC(3) (0) | 2024.06.19 |
쌍용교육 -JSP수업 80일차 - ch08_SpringMVC(2) (0) | 2024.06.18 |

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);
}


'쌍용교육(JAVA) > Spring' 카테고리의 다른 글
쌍용교육 -JSP수업 83일차 - ch10_SpringMybatis(1) (0) | 2024.06.21 |
---|---|
쌍용교육 -JSP수업 82일차 - ch09_SpringJDBC(2) (0) | 2024.06.20 |
쌍용교육 -JSP수업 81일차 - ch09_SpringJDBC(1) (0) | 2024.06.19 |
쌍용교육 -JSP수업 81일차 - ch08_SpringMVC(3) (0) | 2024.06.19 |
쌍용교육 -JSP수업 80일차 - ch08_SpringMVC(2) (0) | 2024.06.18 |