728x90

JOIN 처리할 DTO 2개 ( 하위 DTO 는 포함관계로 )

Mybatis 에서 원하는 인자값으로 2개 이상 보내고자 할때 Map 이용

Map<String, Object> map = new HashMap();
map.put("mm_parent", m);
map.put("user_id", user_id);
List<MenuDTO> menu = menuService.menuSubList(map);
public interface MenuService { // 인터페이스
    List<MenuDTO> menuSubList(Map<String, Object> map);
}
@Service("MenuService")
public class MenuServiceImpl implements MenuService { //구현

    @Autowired
    MenuDAO menuDAO;
  
    @Override
    public List<MenuDTO> menuSubList(Map<String, Object> map) {
        return menuDAO.menuSubList(map);
    }
}

DAO ( Repository )

@Repository
public class MenuDAO extends SqlSessionDaoSupport {

    @Autowired
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
        super.setSqlSessionFactory(sqlSessionFactory);
    }
 
    public List<MenuDTO> menuSubList(Map<String, Object> map) { 
    	return getSqlSession().selectList("menuSubList" , map );
    }
}

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <typeAliases>
        <typeAlias type="com.house.handler.dto.UserDTO" alias="userConfig"  />
        <typeAlias type="com.house.handler.dto.LogDTO" alias="logConfig"  />
        <typeAlias type="com.house.handler.dto.MenuDTO" alias="menuConfig"  />
        <typeAlias type="com.house.handler.dto.MenuSubDTO" alias="menuSubConfig"  />
    </typeAliases>
</configuration>

menu-mapper.xml

<resultMap id="menuJoinMap" type="menuConfig" >
        <id column="mm_parent" property="mm_parent" />
        <id column="mm_code" property="mm_code" />
        <result column="mm_seq" property="mm_seq" />
        <result column="mm_level" property="mm_level" />
        <result column="mm_module" property="mm_module" />
        <result column="mm_name" property="mm_name" />
        <result column="mm_navi" property="mm_navi" />
        <result column="mm_path" property="mm_path" />
        <result column="mm_icon" property="mm_icon" />
        <result column="mm_sort" property="mm_sort" />
        <result column="mm_is_use" property="mm_is_use" />
        <result column="mm_reg_date" property="mm_reg_date" />
        <collection property="menuSub" resultMap="menuSubJoinMap" />
    </resultMap>

    <resultMap id="menuSubJoinMap" type="menuSubConfig">
        <id column="mm_parent" property="mm_parent" />
        <id column="mm_code" property="mm_code" />
        <result column="mmu_seq" property="mmu_seq" />
        <result column="emp_id" property="emp_id" />
        <result column="mu_view" property="mu_view" />
        <result column="mu_new" property="mu_new" />
        <result column="mu_mod" property="mu_mod" />
        <result column="mu_del" property="mu_del" />
        <result column="mu_show" property="mu_show" />
        <result column="reg_date" property="reg_date" />
    </resultMap>

    <select id="menuSubList" parameterType="map" resultMap="menuJoinMap">
        <![CDATA[
            select
            mm.*
            , mmu.emp_id
            , mmu.mu_view
            , mmu.mu_new
            , mmu.mu_mod
            , mmu.mu_del
            , mmu.mu_show
            , mmu.reg_date
            from menu mm
             left outer join menu_auth mmu on mm.mm_parent = mmu.mm_parent and mm.mm_code = mmu.mm_code
            where mm.mm_seq     > 0
            and mm.mm_is_use    = 'Y'
            and mmu.mu_show		= 'Y'
            and mmu.emp_id	    = #{user_id}
            order by mm.mm_code asc
        ]]>
    </select>

728x90

+ Recent posts