본문 바로가기
공부

마이바티스

by 자비리뷰 2023. 10. 18.

컨트롤러(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에 연결하는 것이다.)

 

(일단 이정도 적고 다른 것좀 확인하고 이어적겠다.)