본문 바로가기
Study/SPRING FRAMEWORK

Mybatis 로 Spring 에서 MySql 이용하기

by Answer Choi 2015. 2. 12.
반응형





testServer.zip 

 

 

우선 제가 참고한 사이트는 Happy My Life 님의 블로그 입니다.

 

따라하다 잘 안되어 몇군데는 바꾸니 되네요.

 

일단 기본적으로 이전에 포스팅했던 eclipse에서 Spring maven tomcat 설치하기  에서 했던 코드를 바탕으로 작업을 하니 참고바랍니다.

 

Spring framework에서 mysql에 접근하기 위해서는 mybatis를 이용하는것 같습니다.


우선 SQL문을 미리 mapper에 넣어놓고 쓰는데, 검색해보니 JDBC보다 코드가 최대 90%까지 줄어든다하네요.


우선 pom.xml에서 dependency를 추가해 줘야 합니다.



그림과 같이 pom.xml 파일에서 마우스 우클릭-> Maven->Add Dependency를 클릭해 줍니다.


 

 


위의 화면이 나오면 mybatis를 검색해 위와 같은걸 선택한 후 OK

 

 

또다시 반복해서 mybatis-spring을 추가

 

 

 

mysql-connector-java 추가

 


spring-jdbc 추가

다음 root-context.xml에 namespace를 추가합니다.


그림과 같이 src->main->webapp->WEB-INF->spring->root-context.xml을 선택한 후 오른쪽에서 Namespaces를 클릭합니다.

그리고 jdbc, mvc, mybatis-spring을 추가해 줍니다.

이제 bean에 dataSource, sqlSessionFactory,transactionManager,sqlSession을 추가해 줍니다.

아래그림처럼 beans탭을 이용하여 New Bean..으로 추가해 주면 되지만,


Source탭을 이용해 아래 코드를 추가해 줘도 됩니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 <bean id="dataSource"
        class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost/netplug"></property>
        <property name="username" value="root"></property>
        <property name="password" value="1234"></property>
    </bean>
       
    <bean id="sqlSessionFactory"
        class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation"
            value="classpath:mybatis/mybatis-config.xml">
        </property>
    </bean>
   
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
   
    <bean id="sqlSession"
        class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg  ref="sqlSessionFactory"></constructor-arg>
    </bean>
cs

위 소스의 Line4~6은 자신의 mysql에 맞게 적으시면 됩니다.

전 netplug라는 schema와 0000dc180000이라는 table을 만들었습니다.



이제 mapper를 만들어 보겠습니다. mapper는 mybatis에서 sql문을 대신 써서 db를 가져오는 역할을 합니다.

src->main->resources폴더에서 마우스 우클릭 New->Other->Java->package를 선택합니다.


package이름은 mybatis로 만들어 줍니다.

그리고 mybatis package에서 마우스 우클릭으로 new->other->XML->XML File을 선택합니다.

file 이름은 mapper.xml과 mybatis-config.xml 2개를 만들어 줍니다.


mybatis-config.xml

1
2
3
4
5
6
7
8
9
<?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="mybatis/mapper.xml" />
    </mappers >
</configuration>
cs

mapper.xml

1
2
3
4
5
6
7
8
9
10
<?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= "userControlMapper" >
    <select id ="selectSample" parameterType="java.util.HashMap" resultType= "java.util.HashMap">
        select *
        from 0000dc180000
       
    </select >
</mapper>
cs

Line 5~9가 하나의 query 를 위한 것이고, 실질적인 sql문은 Line 6~7에 있습니다. 전 모든 데이터 쿼리로~

이제 JAVA 메인 소스를 추가합니다.

메인소스는 src->main->java->com->answerofgod->spring->HomeController.java 입니다.

패키지이름에 따라 경로가 다를 수 있습니다.

HomeController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@Controller
public class HomeController {
   
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
   
    @Autowired
      private SqlSession sqlSession;
   
    /**
     * Simply selects the home view to render by returning its name.
     */
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
       
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
       
        String formattedDate = dateFormat.format(date);
       
        model.addAttribute("serverTime", formattedDate );
       
        List<HashMap<StringString>> outputs = sqlSession.selectList("userControlMapper.selectSample");
        model.addAttribute("showDB", outputs.toString());
       
       
        return "home";
    }
   
}
cs

Line 6~7 Line 23~24 부분 추가했습니다.

이제 마지막으로 JSP에 표시되도록 코딩만 해주면 됩니다.

JSP파일은 src->main->webapp->WEB-INF->views->home.jsp에 있습니다.

home.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page session="false"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<head>
    <title>Home</title>
</head>
<body>
<h1>
    Hello world!  
</h1>
 
<P>  The time on the server is ${serverTime}. </P>
<p> This is my Database </p>
<p> ${showDB}</p>
</body>
</html>
cs

Line 14~15가 새로 추가된 부분입니다.

전체적으로 손을 댄 부분입니다.


이제 run as-> run on server로 실행해 보겠습니다.


제가 임의로 mysql에 넣어준 값들이 그대로 쿼리되어 표시되는 걸 보실 수 있습니다.


 

 

반응형

인기글