이전 글의 프로젝트의 DB연결을 Mybatis로 바꿔주자.

전의 프로젝트의 일부를 가져와서 아래처럼 폴더 셋팅을 해주자.


이전 글 링크 : https://welcomto-dd.tistory.com/45



저번 프로젝트(SpringjdbcTemplate)에서 

① CustomDAO.java,

② CustomDTO.java,

③ CustomMain.java,

④ app-context.xml,pom.xml 파일을 가져온다.


1. Mybatis 환경 세팅 


링크 : https://mvnrepository.com/


1) mybatis 검색 후 mybaits, mybatis Spring의 코드를 긁어오자.



-pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    <dependencies>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>
        
        <!-- mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>
    </dependencies>
cs

긁어 온 코드를 pom.xml에 붙여넣고 저장하면 pom.xml을 읽어 라이브러리를 자동으로 받는다.


2) app-context.xml 파일 작성


-app-context.xml

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
    <!-- mybatis setting -->
 
    <!-- 사용자 -->
    <bean id="customDAO"
    class="com.exe.springmybatis.CustomDAO">
        <property name="sessionTemplate" ref="sessionTemplate"></property>
    </bean>
 
    <!-- 제품 -->
    <bean id="sessionTemplate"
    class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg ref="sessionFactory"/>
    </bean>
    
    <!-- dataSource를 연결해주는 역할을 하는애(sessionFactory) -->
    <bean id="sessionFactory"
    class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    <!-- DB 연결 -->
    <bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close"
    p:driverClassName="oracle.jdbc.driver.OracleDriver"
    p:url="jdbc:oracle:thin:@192.168.16.12:1521:TestDB"
    p:username="suzi"
    p:password="a123"
    />
cs

여기서 sessionFactory 부분에 property를 하나 추가해준다.


1
2
3
4
5
6
7
    <!-- dataSource를 연결해주는 역할을 하는애(sessionFactory) -->
    <bean id="sessionFactory"
    class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation"
        value="classpath:/com/exe/springmybatis/mybatis-config.xml"/>
    </bean>
cs

property name="configLocation" 바로 이부분이다.

sql 경로 설정에 관한 코드이다. 그럼 이 파일을 만들어주러 가자.


3) mybatis-config 파일 생성 및 작성


-mybatis-config.xml 파일 생성


-mybatis-config.xml

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
31
32
33
34
<?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>
 
<!-- 다른 struts와 연결할 때 사용 -->
<properties>
    <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@192.168.16.12:1521:TestDB"/>
    <property name="username" value="suzi"/>
    <property name="password" value="a123"/>
</properties>
 
<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
</environments>
 
<!-- spring하고 연결할때는 얘만 필요 -->
<mappers>
    <mapper resource="com/exe/mapper/customMapper.xml"/>
</mappers>
 
</configuration>
cs

Spring 연결에서는 mappers 부분이 sql문을 담고있는 xml파일과의 연결을 담당한다.

customMapper.xml이라는 sql을 모아놓은 파일을 작성해주러 가자.


4) customMapper.xml 파일 생성 및 작성


-패키지 및 파일 생성


-customMapper.xml

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
<?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.exe.mapper">
 
<insert id="insert" parameterType="com.exe.springmybatis.CustomDTO">
    insert into custom(id,name,age) values(#{id},#{name},#{age})
</insert>
 
<select id="list" resultType="com.exe.springmybatis.CustomDTO">
    select id,name,age from custom
</select>
 
<select id="listOne" parameterType="int" resultType="com.exe.springmybatis.CustomDTO">
    select id,name,age from custom where id=#{id}
</select>
 
<update id="update" parameterType="com.exe.springmybatis.CustomDTO">
    update custom set name=#{name}, age=#{age} where id=#{id}
</update>
 
<delete id="delete" parameterType="int">
    delete from custom where id=#{id}
</delete>
 
</mapper>
cs


5) CustomDAO.java 파일 작성


-CustomDAO.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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.exe.springmybatis;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
 
import javax.sql.DataSource;
 
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
 
public class CustomDAO {
 
    private SqlSessionTemplate sessionTemplate;
    
    //의존성 주입
    public void setSessionTemplate(SqlSessionTemplate sessionTemplate) {
        this.sessionTemplate=sessionTemplate;
    }
    
    Connection conn=null;
    
    //insert
    public void insertData(CustomDTO dto) {
        sessionTemplate.insert("com.exe.mapper.insert",dto);
    }
    
    //select 모든 데이터
    public List<CustomDTO> getList(){
        
        List<CustomDTO> lists=sessionTemplate.selectList("com.exe.mapper.list");
        
        return lists;
    }
    
    //select 1개의 데이터
    public CustomDTO getReadData(int id){
        
        CustomDTO dto=sessionTemplate.selectOne("com.exe.mapper.listOne",id);
        
        return dto;
    }
        
    //update
    public void updateData(CustomDTO dto) {
        
        sessionTemplate.update("com.exe.mapper.update",dto);
    }
    
    //delete
    public void deleteDate(int id) {
        sessionTemplate.delete("com.exe.mapper.delete",id);
    }
}
cs


6) 마지막으로 Main에서 실행


-CustomMain.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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.exe.springmybatis;
 
import java.util.List;
 
import org.springframework.context.support.GenericXmlApplicationContext;
 
public class CustomMain {
 
    public static void main(String[] args) {
        
        GenericXmlApplicationContext context=new GenericXmlApplicationContext("app-context.xml");
        
        CustomDAO dao=(CustomDAO)context.getBean("customDAO");
        
        CustomDTO dto;
        
        /*
        //insert
        dto=new CustomDTO();
        dto.setId(333);
        dto.setName("안녕");
        dto.setAge(25);
        
        dao.insertData(dto);
        
        System.out.println("insert 완료!");
        */
        
        /*
        //Oneselect
        dto=dao.getReadData(111);
        
        if(dto!=null) {
            System.out.printf("%d %s %d\n",dto.getId(),dto.getName(),dto.getAge());
        }
        
        System.out.println("OneSelect 완료!");
        */
 
        //update
        dto = new CustomDTO();
        
        dto.setId(555);
        dto.setName("이지은");
        dto.setAge(27);
        
        dao.updateData(dto);
 
        
        //delete
        //dao.deleteDate(333);
 
        //select
        List<CustomDTO> lists=dao.getList();
        
        for(CustomDTO dto1:lists) {
            System.out.printf("%d %s %d\n",dto1.getId(),dto1.getName(),dto1.getAge());
        }
        
        System.out.println("select 완료!");
    }
}
cs


-실행화면

하나씩 주석 풀어주면서 테스트해보면 잘 실행된다.



+ Recent posts