Spring 4일차 수업

김형우·2022년 12월 12일
0

Spring

목록 보기
4/8

1. 마이바티스란?

객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거 합니다. Mybatis에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가지고 있습니다.

2. 아래의 순서대로,프로젝트를 새로 생성후 mvc_board 리스트를 뽑아 내세요.

1) pom.xml -> 마이바티스 라이브러리 다운로드
2) VO 구현
3) Mapper interface 선언
4) xml 로 해당 mapper interface 구현
5) 테스트코드로 테스트

BoardVO.java

package edu.global.ex.vo;

import java.sql.Timestamp;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
//디버깅할때 파라미터값 순서대로 뿌려주는 역할을 한다.
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor

public class BoardVO {

	private int bid;
	private String bname;
	private String btitle;
	private String bcontent;
	private Timestamp bdate;
	private int bhit;
	private int bgroup;
	private int bstep;
	private int bindent;
	
}

BoardMapper.java


import org.apache.ibatis.annotations.Mapper;
import edu.global.ex.vo.BoardVO;
import java.util.List;

@Mapper
public interface BoardMapper {
	public List<BoardVO> getList(); //목록보기
}

BoardMapper.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.global.ex.mapper.BoardMapper">
    <select id="getList" resultType="edu.global.ex.vo.BoardVO">
		    <![CDATA[
		    	select * from mvc_board order by bgroup desc, bstep asc
		    ]]>
    </select>
</mapper>

BoardMapperTest.java


package edu.global.ex.mapper;

import static org.junit.jupiter.api.Assertions.*;

import java.util.List;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import edu.global.ex.vo.BoardVO;

@SpringBootTest
class BoardMapperTest {

	@Autowired
	
	//주입
	private BoardMapper boardMapper;
	
	@Test
	void testList() {

		System.out.println(boardMapper);
		
		List<BoardVO> boards = boardMapper.getList();
	
		for(BoardVO board : boards) {
			System.out.println(board);
		}
	}
	
	}



3.아래를 sql로 작성하시오.

  • 모든 사원의 이름(첫 글자는 대문자로, 나머지 글자는 소문자로 표시) 및 이름 길이를
    표시하는 쿼리를 작성하고 컬럼 별칭은 적당히 넣어서 출력하라.
select substr((ename), 1,1) || substr(lower(ename),2 ,5), length(ename) as 길이 from emp ;
  • 사원의 이름과 커미션을 출력하되, 커미션이 책정되지 않은
    사원의 커미션은 'no commission'으로 출력하라.
select ename, NVL(to_char(comm), 'no commission') as cum from emp;
  • 모든 사원의 이름,부서번호,부서이름을 표시하는 질의를 작성하라.(DECODE)
select ename, deptno, decode(deptno, 10, 'accounting', 20, 'research', 30, 'sales', 40, 'operations') from emp order by deptno;
  • 30번 부서에 속한 사원의 이름과 부서번호 그리고 부서이름을 출력하라.
SELECT EMP.ENAME, EMP.DEPTNO, DEPT.DNAME FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.DEPTNO = 30;
profile
개발자 지망생

0개의 댓글