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