Spring - 6_2. Spring JDBC (XML)

스프링에 JDBC연결하여 TBL_MENU 테이블 목록을 연결하여

이클립스로 목록을 출력할 예정입니다.

사용중인 테이블은 아래와 같습니다.

 

 

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

 

 

 

우선 JDBC연결에 필요한 정보를 properties 파일에 작성합니다.

사용 데이터베이스는 오라클입니다.

connection-info.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

 

MenuMapper은 전체목록에 필요한 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>
	<mappers>
		<mapper resource="com/memory/xmlconfig/mapper/MenuMapper.xml"/>
	</mappers>

</configuration>

 

 

스프링 기초 설정및 jdbc작성할 xml을 작성합니다.

spring-context.xml

 

1. 우선 context 스키마이용하여 저장해둔 커넥션연결정보를가지고 dataSource에 연결합니다.

2. 연결정보가지고 SqlSessionFactory 객체 생성하여 dataSource 객체를 주입합니다.

3. SqlSessionTemplate에 마찬가지로 연결합니다.

아래의 빈 스캔 범위는 폴더상위폴더 를 기준으로 작성하였습니다.

 

<?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"
	xsi:schemaLocation="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. 커넥션 정보 가져오기 -->
	<context:property-placeholder location="connection-info.properties"/>
	<!-- dataSource 연결 -->
	<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}"/>
		<property name="defaultAutoCommit" value="false"/>
	</bean>
	
	<!-- 2. SqlSessionFactory 생성 -->
	<bean id="factoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="ConfigLocation" value="com/memory/xmlconfig/config/mybatis-config.xml"/>
	</bean>
	
	<!-- 3. sql 실직적 연결 -->
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg name="sqlSessionFactory" ref="factoryBean"/>
	</bean>
	
	<!-- 빈 스캔범위 -->
	<context:component-scan base-package="com.memory/xmlconfig"/>
</beans>

 

기본적인 설정은 끝났습니다.

이제 메뉴 정보를 저장할 Menu class파일을 생성합니다.

Menu.java

package com.memory.xmlconfig.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 + "]";
	}
	
}

 

실행할 Main 클래스를 생성해줍니다.

Application.java

 

이 파일에서 MenuService 를 빈으로 받아오고, Service객체 안에 있는 selectMenuList 메소드실행하여 List로 반환받아 출력합니다.

package com.memory.xmlconfig.run;

import java.util.List;

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

import com.memory.xmlconfig.model.service.MenuService;
import com.memory.xmlconfig.model.vo.Menu;

public class Application {

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

}

 

Main에서 실행하면 Serivce의 메소드를 호출합니다.

interface - class 파일로 이용하였습니다

 

MenuService.interface

package com.memory.xmlconfig.model.service;

import java.util.List;

import com.memory.xmlconfig.model.vo.Menu;

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

 

MenuServiceImpl.java

우선 Service라는 애너테이션으로 빈으로등록합니다.

그후 Dao와 Template 를 자동주입으로 받아옵니다.

meneDao의 selectMenuSelect 메소드를 호출합니다.

package com.memory.xmlconfig.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.memory.xmlconfig.model.dao.MenuDao;
import com.memory.xmlconfig.model.vo.Menu;

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

	// 1. 메뉴 전체 조회
	@Override
	public List<Menu> selectMenuList() {
		return menuDao.selectMenuList(sqlSessionTemplate);
	}

}

 

 

menuDao.interface

package com.memory.xmlconfig.model.dao;

import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;

import com.memory.xmlconfig.model.vo.Menu;

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

menuDaoImpl.java

전체메뉴조회할때 mybatis의 xml 을 이용할것인데.

설명은 이와같습니다. namespace명.호출할id명

package com.memory.xmlconfig.model.dao;

import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;

import com.memory.xmlconfig.model.vo.Menu;

@Repository("menuDao")
public class MenuDaoImpl implements MenuDao{

	// 1. 메뉴 전체 조회
	@Override
	public List<Menu> selectMenuList(SqlSessionTemplate sqlSessionTemplate) {
		return sqlSessionTemplate.selectList("MenuMapper.selectMenuList");
	}

}

 

MenuMapper.xml

데이터를 불러올 쿼리문을 작성한 xml파일입니다.

resultMap은 테이블의 컬럼과 Menu 객체 필드명과 맞추기위해 사용한 기능입니다.

만약 resultMap을 사용하지않을려면 필드명과 테이블의컬럼명이 똑같아야 됩니다.

개인적으로 resultMap쓰는것이 더욱 가독성 있게 느껴지는것같습니다.

<?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="MenuMapper">
	<resultMap id="menuResultMap" type="com.memory.xmlconfig.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 - 10. Transactions  (0) 2021.10.25
Spring - 9. mapperscan  (0) 2021.10.25
Spring - 8. 다국어 메세지  (0) 2021.10.22
Spring - 7. Spring properties  (0) 2021.10.22
Spring - 6_1. Spring JDBC (Annotation)  (0) 2021.10.22
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유