ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Mybatis - Resultmap을 사용해서 VO 여러가지를 join쿼리 사용하여 매핑
    JAVA/Egov 2020. 3. 23. 16:35

    AdminVO

    package net.araise.practice.vo;
    
    import java.sql.Timestamp;
    
    import lombok.Data;
    
    @Data
    public class AdminVO {
    	
    	private String adminId; //관리자ID
    	private String adminPwd;//관리자PW
    	private String adminLv;//관리자LV
    	private String useYn; // 사용여부
    	private int hsptlId; //병원코드
    	private String createUserId; //최초등록자
    	private String createIp;//최초등록IP
    	private Timestamp createTime; //최초등록일시
    	private String modifyUserId; //최종수정자
    	private String modifyIp;//최종수정등록IP
    	private Timestamp modifyTime; //최종수정일시
    	
    	private AdminInfoVO adminInfoVO; //쿼리로 join할 vo
    	
    }
    

    AdminInfoVO

    package net.araise.practice.vo;
    
    import java.sql.Timestamp;
    
    import lombok.Data;
    
    @Data
    public class AdminInfoVO {
    	private String adminId;
    	private String adminName;
    	private String adminPhone;
    	private String adminEmail;
    	private int profileId;
    	private String createUserId; //최초등록자
    	private Timestamp createTime; //최초등록일시
    	private String modifyUserId; //최종수정자
    	private Timestamp modifyTime; //최종수정일시
    }
    

    mapper.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="net.araise.practice.mapper.PageMapper">
    
    	<resultMap type="AdminInfoVO" id="AdminInfoVO">
    		<result column="ADMIN_NAME" property="adminName" />
    		<result column="ADMIN_PHONE" property="adminPhone" />
    		<result column="ADMIN_EMAIL" property="adminEmail" />
    	</resultMap>
    
    	<resultMap type="AdminVO" id="AdminVO">
    		<result column="ADMIN_ID" property="adminId" />
    		<result column="HSPTL_ID" property="hsptlId" />
    		<result column="FIRST_REG_DT" property="createTime" />
    		<result column="ADMIN_LEVEL" property="adminLv" />
    		<collection property="adminInfoVO" resultMap="AdminInfoVO" />
    	</resultMap>
    
    	<select id="adminUser" parameterType="AdminVO" resultMap="AdminVO">
    		SELECT
    		a.ADMIN_ID,
    		a.HSPTL_ID,
    		a.FIRST_REG_DT,
    		a.ADMIN_LEVEL,
    		b.ADMIN_NAME,
    		b.ADMIN_PHONE,
    		b.ADMIN_EMAIL
    		FROM tn_admin as a
    		JOIN
    		tn_admin_info as b
    		ON b.ADMIN_ID = a.ADMIN_ID;
    	</select>
    
    </mapper>

    mapper / servcie / serviceImpl / controller은 생략


    .Jsp

    <%@ taglib prefix="c"      uri="http://java.sun.com/jsp/jstl/core" %>
    <c:forEach var="admin" items="${admins}" varStatus="status">
    	<tr>
        	<td>${status.count}</td>
    		<td>${admin.adminInfoVO.adminName}</td>
    		<td>${admin.adminId}</td>
    		<td>${admin.hsptlId}</td>
    		<td>${admin.adminInfoVO.adminEmail}</td>
    		<td>${admin.adminInfoVO.adminPhone}</td>
    		<td>${admin.createTime}</td>
    	</tr>
    </c:forEach>

     

    잘 반영된다.

Designed by Tistory.