Spring - 9. mapperscan

MyBatis에서 제공하는 mybatis-spring 연동모듈을 이용하여 Mapper Inteface를 스프링 빈으로 주입받아 DB에 접근하는 기술입니다.

실습내용은 TBL_MENU 테이블의 목록을 전체 출력할려고합니다.

 

파일 목록은 아래와같습니다.

 

실습에 사용된 테이블은 아래와 같습니다.

Menu 객체를 저장할 파일의 정보는 아래와 같습니다.

Menu.java

package com.memory2.model.vo;

public class Menu {
	private int code;
	private String name;
	private int price;
	private int categoryCode;
	private String orderableStatus;
	
	public Menu() {
	}

	public Menu(int code, String name, int price, int categoryCode, String orderableStatus) {
		this.code = code;
		this.name = name;
		this.price = price;
		this.categoryCode = categoryCode;
		this.orderableStatus = orderableStatus;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	public int getCategoryCode() {
		return categoryCode;
	}

	public void setCategoryCode(int categoryCode) {
		this.categoryCode = categoryCode;
	}

	public String getOrderableStatus() {
		return orderableStatus;
	}

	public void setOrderableStatus(String orderableStatus) {
		this.orderableStatus = orderableStatus;
	}

	@Override
	public String toString() {
		return "Menu [code=" + code + ", name=" + name + ", price=" + price + ", categoryCode=" + categoryCode
				+ ", orderableStatus=" + orderableStatus + "]";
	}
	
}

 

오라클 DB와 연결을 위한 properties 파일은 아래와같습니다.

oracle.dev.driver=oracle.jdbc.driver.OracleDriver
oracle.dev.url=jdbc:oracle:thin:@localhost:1521:xe
oracle.dev.username=mybatis
oracle.dev.password=mybatis

 

mybatis 설정 xml파일은 아래와같습니다.

mybatis-config.xml

mybatis에설정은 대부분 스프링 기본설정파일에서 진행하는거여서 빈상태입니다!

<?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>




</configuration>

 

스프링 기본설정 xml파일입니다.

spring-context.xml

기존과 달라진점은 mybatis-spring:sacn 태그입니다.

직접주입하지않고 알아서 찾아주는 상태입니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
		
	<!-- 1. 연결정보 properties 가져오기 -->
	<context:property-placeholder location="connection-info.properties"/>
	
	<!-- 2. 커넥션 연결하기 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="${oracle.dev.driver}"/>
		<property name="url" value="${oracle.dev.url}"/>
		<property name="username" value="${oracle.dev.username}"/>
		<property name="password" value="${oracle.dev.password}"/>
	</bean>
	
	<!-- SqlSessionFactoryBean 연결 -->
	<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="configLocation" value="com/memory2/config/mybatis-config.xml"/>
	</bean>
	
	<!-- SqlSessionTemplate 연결 -->
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
	</bean>
	
	<!-- 빈 스캔범위 -->
	<context:component-scan base-package="com.memory2"/>
	
	<mybatis-spring:scan base-package="com.memory2.model.dao"/>

</beans>

 

실행에 필요한 Main class 파일입니다.

package com.memory2.run;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

import com.memory2.model.service.MenuService;
import com.memory2.model.vo.Menu;


public class Application {

	public static void main(String[] args) {
		ApplicationContext context = new GenericXmlApplicationContext("com/memory2/config/spring-context.xml");
		
		MenuService menuService = context.getBean("menuService", MenuService.class);
		
		List<Menu> menuList = menuService.selectMenuList();
		
		for(Menu menu : menuList) {
			System.out.println(menu);
		}
		
	}

}

 

MenuService.interface

package com.memory2.model.service;

import java.util.List;

import com.memory2.model.vo.Menu;

public interface MenuService {
	List<Menu> selectMenuList();
}

 

MenuServiceImpl.java

package com.memory2.model.service;

import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.memory2.model.dao.MenuDao;
import com.memory2.model.vo.Menu;

@Service("menuService")
public class MenuServiceImpl implements MenuService{
	
	SqlSessionTemplate sqlSessionTemplate;
	
	@Autowired
	public MenuServiceImpl(SqlSessionTemplate sqlSessionTemplate) {
		this.sqlSessionTemplate = sqlSessionTemplate;
	}

	@Override
	public List<Menu> selectMenuList() {
		return sqlSessionTemplate.getMapper(MenuDao.class).selectMenuList();
	}

}

 

MenuDao.interface

package com.memory2.model.dao;

import java.util.List;

import com.memory2.model.vo.Menu;

public interface MenuDao {
	List<Menu> selectMenuList();
}

 

MenuDao.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="com.memory2.model.dao.MenuDao">
	<resultMap id="menuResultMap" type="com.memory2.model.vo.Menu">
		<id property="code" column="MENU_CODE"/>
		<result property="name" column="MENU_NAME"/>
		<result property="price" column="MENU_PRICE"/>
		<result property="categoryCode" column="CATEGORY_CODE"/>
		<result property="orderableStatus" column="ORDERABLE_STATUS"/>
	</resultMap>
	<select id="selectMenuList" resultMap="menuResultMap">
		SELECT
  		   	   MENU_CODE
  		   	 , MENU_NAME
  		   	 , MENU_PRICE
  		   	 , CATEGORY_CODE
  		   	 , ORDERABLE_STATUS
  		  FROM TBL_MENU
  		 ORDER BY MENU_CODE
	</select>	
</mapper>

 

출력화면

'프로그래밍 > Spring' 카테고리의 다른 글

Spring - 11. Transactions AOP  (0) 2021.10.26
Spring - 10. Transactions  (0) 2021.10.25
Spring - 6_2. Spring JDBC (XML)  (0) 2021.10.25
Spring - 8. 다국어 메세지  (0) 2021.10.22
Spring - 7. Spring properties  (0) 2021.10.22
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유