application.properties 기존 H2 DB 연결 정보 >> postgreSQL


#postgreSQL

spring.datasource.url=jdbc:postgresql://{url}:{port}/{sid}

spring.datasource.driverClassName=org.postgresql.Driver

spring.datasource.username={username}

spring.datasource.password={password}

spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect



MyBatis 연동


1. sqlSession과 Mapper 연동을 위해 Application.java에 빈을 등록

@Bean

public SqlSessionFactory sqlSessionFactory(DataSource ds) throws Exception {

    SqlSessionFactoryBean factory = new SqlSessionFactoryBean();

    factory.setDataSource(ds);

    factory.setMapperLocations(

        new PathMatchingResourcePatternResolver().getResources("classpath:/mappers/*_SQL.xml") // A

    );

    return factory.getObject();

}


@Bean

public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory factory) {

    return new SqlSessionTemplate(factory);

}




2. Mapper interface 생성


package com.jt.lotto.mapper;


import org.apache.ibatis.annotations.Mapper;


@Mapper

public interface LottoMapper {


public List<Map<String, String>> findAll();


}




2. A 경로에 SQL 등록

/resources/mappers/Lotto_SQL.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.jt.lotto.mapper.LottoMapper">


    <select id="findAll" resultType="HashMap">

            select * from lotto

    </select>


</mapper>




3. 사용

@resource

public LottoMapper mapper;


public void test() {

Object result = mapper.findAll();

}


참 쉽죠?

문득 설정하다보니 mapper와 dao의 궁극적인 차이가 뭔지 싶다.

일하면서는 단순히 dao 쪽이 코딩할 게 (대체로 보일러플레이트 코드) 많아 번거로운 정도로만 인식했는데

dao는 어쨌든 개발자가 의도적으로 sql 실행을 위한 sqlSession 생성 시점에 접근할 수 있으니 

사용 목적은 같더라도 어떤 시점에서는 구분해서 사용해야 하는 게 아닐까 하는 생각도 들고. 







참고 URL: http://iotsw.tistory.com/77









'Spring Boot' 카테고리의 다른 글

Spring Boot 웹페이지 만들기 & H2 DB 연결  (1) 2017.08.05
Spring Boot 시작하기  (0) 2017.08.05

WRITTEN BY
Project JT
2명의 개발자가 팀 프로젝트를하며 사용한 기술들을 남기는 팀 블로그입니다.

,