MyBatis
< 특징 >
( 1 )
편리하다
옛날 코딩
sql = "select * + ... "from table" + ...
( 2 )
약간 내 생각인데..
view → Controller → Service → Dao → resources/mappers/.xml(변환) → DB
< 설정 >
MyBatis 설정
https://tinylittlelife.tistory.com/217
< 경로 >
resources/mappers/table명(소문자).xml
< resources/mappers 아래 폴더 >
폴더명 | 특징 |
common | 공통 xml 파일 넣는곳 |
xml파일 정의
( 이것은 MyBatis여! )
<?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 >
< select >
조회 (get 방식)
예시
( Like 검색 )
( ${} <= DAO 인터페이스의 Param 값 )
Param
( 단지 여러개의 매개변수를 들어오게 하고 싶다면 Param 사용 )
https://tinylittlelife.tistory.com/223
<mapper namespace="">
<select id="findByDnameContaining" parameterType="pageReq" resultType="DEPT">
SELECT DNO , DNAME , LOC ,INSERT_TIME, UPDATE_TIME FROM TB_DEPT
WEHRE DNAME LIKE '%' || #{param} || '%'
OFFSET #{pageReq.page} * #{pageReq.size} ROWS FETCH FIRST #{pageReq.size} ROWS ONLY
</select>
</mapper>
< 참조 >
속성 | 특징 |
namespace | 사용할 Dao 인터페이스의 경로를 지정해준다 ( 도메인.app명.패키지명.인터페이스명 ) ( 예시 : com.example.mybatisexam.dao.DeptDao ) |
#{} | 인터페이스의 @Param("param") 파라미터 값 또는 일반 매개변수도 이용 가능하다. |
id | DAO 인터페이스에서 사용할(가져올) 함수 이름 |
parameterType | 파라미터 매개변수의 자료형 ( 데이터를 보낼때 ) |
resultType | 함수의 결과로 나올 자료형 ( 데이터를 받을때 ) |
< 페이징 처리 >
OFFSET 은 ORACLE 12 버전 이상만 가능
정의 | 특징 |
OFFSET N ROWS |
N 만큼 데이터 건너뛰기 |
FETCH FIRST N ROWS ONLY | 가져와라( N 만큼 검색해라 ) |
< Like 검색조회 >
어 음.. 조금 형태가 다르다 ㅎ...
Like '%' || #{} || '%'
< common 패키지 >
공통 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="common">
<sql id="selectCol">
, INSERT_TIME
, UPDATE_TIME
</sql>
</mapper>
< 참조 >
속성 | 특징 |
namespace | 사용할 이름 |
id | 사용할 sql문의 함수이름 |
사용법
다른 xml 파일에서 사용법
( 함수처럼 불러오면 됨 )
<include refid="common.selectCol"></include>
< 예시 >
<select id="findById" parameterType="int" resultType="Dept">
SELECT DNO
,DNAME
,LOC
<include refid="common.selectCol"></include>
FROM TB_DEPT
WHERE DNO = #{dno}
</select>
< 참조 >
< 저장 >
https://tinylittlelife.tistory.com/226
< 수정 >
https://tinylittlelife.tistory.com/227
< 삭제 >
https://tinylittlelife.tistory.com/228
페이징 처리 (React)
https://tinylittlelife.tistory.com/229
페이징 처리 (Jsp)
https://tinylittlelife.tistory.com/225
MyBatis 다이나믹 SQL
https://tinylittlelife.tistory.com/230
MyBatis 최종본
https://tinylittlelife.tistory.com/231
-- < 추후 추가 > --