객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거 합니다. Mybatis에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가지고 있습니다.
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);
}
}
}
select substr((ename), 1,1) || substr(lower(ename),2 ,5), length(ename) as 길이 from emp ;
select ename, NVL(to_char(comm), 'no commission') as cum from emp;
select ename, deptno, decode(deptno, 10, 'accounting', 20, 'research', 30, 'sales', 40, 'operations') from emp order by deptno;
SELECT EMP.ENAME, EMP.DEPTNO, DEPT.DNAME FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.DEPTNO = 30;