-
Spring MVC - MyBatis XML 설정Spring/Spring MVC 2022. 1. 4. 16:46728x90반응형
MyBatis XML 설정
이번엔 XML으로 설정하는 방법을 알아보자
db.properties 생성
db.classname = oracle.jdbc.OracleDriver
db.url = jdbc:oracle:thin:@localhost:1521/xepdb1
db.username = 아이디
db.password = 비밀번호Mapper 생성
Mapper는 쿼리문을 작성하는 파일이다.
▼ mapper.xml (/WEB-INF/mapper/)
<?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="test_db"> <insert id="insert_data" parameterType="kr.co.beans.DataBean"> <![CDATA[ insert into spring_mvc_table (data1, data2, data3) values (#{data1}, #{data2}, #{data3}) ]]> </insert> <select id='select_data' resultType="kr.co.beans.DataBean"> <![CDATA[ select data1, data2, data3 from spring_mvc_table ]]> </select> </mapper>
<참고>
CDATA는 XML 문법 중 하나이다.
작성 중 특수한 문자들이 들어갈 경우 오류가 발생할 수도 있는데 이를 방지하기 위해 넣어준 것이다.
빼도 상관없다.ServletAppContext.xml 설정
1. PropertyPlaceholderConfigurer Bean 정의
db.properties 파일에 작성한 데이터를 XML에서 사용할 수 있도록 Bean을 정의한다.
<!-- properties 파일의 내용을 사용할 수 있도록 Bean을 정의한다 --> <beans:bean class='org.springframework.beans.factory.config.PropertyPlaceholderConfigurer'> <beans:property name="location"> <beans:value>/WEB-INF/properties/db.properties</beans:value> </beans:property> </beans:bean>
2. BasicDataSource Bean 정의
데이터베이스 접속 정보를 관리하는 Bean을 정의한다.
<beans:bean class='org.apache.commons.dbcp2.BasicDataSource' id='basic_data_source'> <beans:property name='driverClassName' value='${db.classname}'/> <beans:property name="url" value="${db.url}"/> <beans:property name="username" value='${db.username}'/> <beans:property name="password" value='${db.password}'/> </beans:bean>
3. SqlSessionFactoryBean Bean 정의
데이터 베이스 접속 정보와 Mapper 파일을 관리하는 Bean을 정의한다.
<beans:bean class='org.mybatis.spring.SqlSessionFactoryBean' id='sqlSession'> <beans:property name="dataSource" ref='basic_data_source'/> <beans:property name="mapperLocations" value='/WEB-INF/mapper/*.xml'/> </beans:bean>
4. SqlSessionTeamplate Bean 정의
쿼리문을 전달하는 Bean을 정의한다. 이 Bean을 주입받아 필요한 쿼리를 실행하게 된다.
<beans:bean class='org.mybatis.spring.SqlSessionTemplate' id='sqlSessionTemplate'> <beans:constructor-arg index='0' ref='sqlSession'/> </beans:bean>
5. 설정이 끝난 ServletAppContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.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.xsd"> <!-- 스캔한 패지키 내부의 클래스 중 Controller 어노테이션을 가지고 있는 클래스들을 Controller로 로딩하도록 한다 --> <annotation-driven/> <!-- 스캔할 bean들이 모여있는 패키지를 지정한다. --> <context:component-scan base-package="kr.co.controller"/> <!-- Controller의 메서드에서 반환하는 문자열 앞 뒤에 붙힐 경로 정보를 셋팅한다. --> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/"/> <beans:property name="suffix" value=".jsp"/> </beans:bean> <!-- 정적파일(이미지, 사운드, 동영상, JS, CSS 등등) 경로 셋팅 --> <resources mapping="/**" location="/resources/"/> <!-- properties 파일의 내용을 사용할 수 있도록 Bean을 정의한다 --> <beans:bean class='org.springframework.beans.factory.config.PropertyPlaceholderConfigurer'> <beans:property name="location"> <beans:value>/WEB-INF/properties/db.properties</beans:value> </beans:property> </beans:bean> <beans:bean class='org.apache.commons.dbcp2.BasicDataSource' id='basic_data_source'> <beans:property name='driverClassName' value='${db.classname}'/> <beans:property name="url" value="${db.url}"/> <beans:property name="username" value='${db.username}'/> <beans:property name="password" value='${db.password}'/> </beans:bean> <beans:bean class='org.mybatis.spring.SqlSessionFactoryBean' id='sqlSession'> <beans:property name="dataSource" ref='basic_data_source'/> <beans:property name="mapperLocations" value='/WEB-INF/mapper/*.xml'/> </beans:bean> <beans:bean class='org.mybatis.spring.SqlSessionTemplate' id='sqlSessionTemplate'> <beans:constructor-arg index='0' ref='sqlSession'/> </beans:bean> </beans:beans>
Controller에서 SqlSessionTemplate 주입받아 사용
@Controller public class TestController { @Autowired SqlSessionTemplate SqlSessionTemplate; @GetMapping("/input_data") public String input_data() { return "input_data"; } @PostMapping("/input_pro") public String input_pro(DataBean dataBean) { SqlSessionTemplate.insert("test_db.insert_data", dataBean); return "input_pro"; } @GetMapping("/read_data") public String read_data(Model model) { List<DataBean> list = SqlSessionTemplate.selectList("test_db.select_data"); model.addAttribute("list", list); return "read_data"; } }
@Autowired
SqlSessionTemplate SqlSessionTemplate;
- mapper.xml에서 정의한 mapper를 사용하기 위해 주입받는다.
SqlSessionTemplate.insert("test_db.insert_data", dataBean);
List<DataBean> list = SqlSessionTemplate.selectList("test_db.select_data");
- 쿼리문 실행728x90반응형'Spring > Spring MVC' 카테고리의 다른 글
Spring MVC - 로깅(Logging) 간단히 알아보자(SLF4J, Logback) (0) 2022.01.28 Spring MVC - Restcontroller (0) 2022.01.04 Spring MVC - oracle db 연결 실패 문제 (Cannot create PoolableConnectionFactory (Listener refused the connection with the following error:) (0) 2022.01.04 Spring MVC - MyBatis Java 설정 (0) 2022.01.04 Spring MVC - 예외처리 (0) 2022.01.04