컨트롤러(TestController.java), 서비스(TestService.java), 다오(TestDao.java), 매퍼(TestMapper.xml)
엔티티(TestEntity.java)
1. 매퍼
매퍼 폴더에 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="연결할 다오 이름">
<mapper namespace="test">
위와 같이 연결할 다오를 설정한다.
(다오와 연결되는 이유는 다오에 @Repository 어노테이션이 있기 때문에 인식할 수 있는 거 같다.)
(test만 적었는데 어떻게 TestDao.java와 연결되는 걸까?)
<select id="selectTest" parameterType="TestEntity" resultType="TestEntity">
<Include refid="aa">
<choose>
<when test="name == null">
ORDER BY
<if test='age > 10'>age</if>
<if test='sortColumn == "address>address</if>
<if test='sortType !=null and sortType =="ASC"'> ASC</if>
<if test='sortType !=null and sortType =="DESC"'> DESC</if>
</when>
<otherwise>
ORDER BY id DESC
</otherwise>
</choose>
OFFSET #{startNum} ROWS FETCH FIRST #{rowCount} ROWS ONLY
</select>
<select id="aa">
SELECT *
FROM
MEMBER
</select>
aa의 SQL문을 selectTest에 include해서 결론적으로 조건에 따라
select * from member where name is null order by {age, address} {ASC, DESC}
select * from member where name order by id desc
이 두 가지 SQL문이 만들어지게 된다.
<select id="selectTest" parameterType="TestEntity" resultType="TestEntity">
resultType과 resultMap
둘 다 기본적으로 DB의 칼럼명과 java의 이름규칙이 달라
(DB에는 serve_id라고 설정 돼 있는데 java에서는 serveId라고 사용하는 경우)
이를 맞춰 줄 때 사용하는 것으로
resultType의 경우는 클래스파일을 만들어서 연결하는 거고, resultMap의 경우는 Mapper에 일일이 적어주는 방식이다.
(우리가 학원에서 배운 방식은 entity로 만들어 resultType에 연결하는 것이다.)
(일단 이정도 적고 다른 것좀 확인하고 이어적겠다.)
'공부' 카테고리의 다른 글
'POI 라이브러리'의 인상(?) (0) | 2023.10.23 |
---|---|
넥사크로 연동 시 내가 매번 실수할 거 같은 사항 (0) | 2023.10.20 |
MVC모델1과 MVC모델2 (1) | 2023.10.17 |
오라클 유튜브 (1) | 2023.10.08 |
구글 색인생성 요청 123 과연 성공하나? (0) | 2023.09.28 |