[JDBC]Mybatis설정방법 및 적용예제

Devel/JDBC|2020. 8. 20. 15:02
반응형

Mybatis 설정



Products Mybatis 3 에서 docs->

MyBatis 흐름 이해하기->


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
package com.config;
 
import java.io.IOException;
import java.io.InputStream;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
public class MySqlSessionFactory {//template class
    static SqlSessionFactory sqlSessionFactory = null;
    static {
        
        String resource = "Configuration.xml";
        InputStream inputStream=null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
     sqlSessionFactory =
        new SqlSessionFactoryBuilder().build(inputStream);
    }//end static
    
    //SqlSession 반환해주는 메서드
    // MySqlSessionFactory.getSession()
    public static SqlSession getSession() {
        SqlSession session = sqlSessionFactory.openSession();
        //실제 사용자가 사용할 connection과 비슷한 객체
        //클래스이름.함수이름 으로 호출 MySqlSessionFactory.getSession()
        
        return session;
    }
    
}//end class
 
 
 
 
 
 

-파일변경이나 경로 수정시
주황box만 변경

-Configuration-> 연결에 필요한 4가지 정보,,,..

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
<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>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers></configuration>
configuraion에 복사 source
+0번 작업
*4가지 설정하기
+


-DEPT 
Dept테이블의 하나의 레코드 저장용도


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
package com.dto;
 
//  Dept테이블의 하나의 레코드 저장용도
public class Dept {
 
    private int deptno;
    private String dname;
    private String loc;
    //멤버 변수 이름이 DB 컬럼 이름과 일치해야 한다.
    public Dept() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Dept(int deptno, String dname, String loc) {
        super();
        this.deptno = deptno;
        this.dname = dname;
        this.loc = loc;
    }
    public int getDeptno() {
        return deptno;
    }
    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getLoc() {
        return loc;
    }
    public void setLoc(String loc) {
        this.loc = loc;
    }
    @Override
    public String toString() {
        return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
    }
    
    
    
    
}
 


주의! 멤버 변수 이름이 DB 컬럼 이름과 일치해야 한다.


-service
//sqlsession 업어오기(conncection과 비슷)
//sesion을 list형식으로 받기 위해 형성
//dao의 select결과 메인으로 리턴
//list 실제 dao에 있는 session

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
package com.service;
 
import java.util.List;
 
import org.apache.ibatis.session.SqlSession;
 
import com.config.MySqlSessionFactory;
import com.dao.OracleMybatisDAO;
import com.dto.Dept;
 
public class OracleMyBatisService {
 
    OracleMybatisDAO dao;
    public OracleMyBatisService() {
        dao = new OracleMybatisDAO();
    }
    public List<Dept> select() {
        SqlSession session = MySqlSessionFactory.getSession();
        //sqlsession 업어오기(conncection과 비슷)
        //sesion을 list형식으로 받기 위해 형성
        List<Dept> list = null;//반환값을 준비
        try {
            list = dao.selectAll(session);//dao에 sqlsession전송
        } finally {
            session.close();//connection.close()와 비슷, 모든 함수마다 닫기
        }
        return list; //dao의 select결과 메인으로 리턴
        //list 실제 dao에 있는 session
    }// end class
 
 
}
 

-OracleMybatisDAO
<select id="selectAll">
//결과가 여러개인 selsect문 실행시 selectList 함수 실행
//DeptMapper.xml 의 id가 selsectAll인 sql을 수행
//DeptMapper.xml 의 id="DselectAll"인 sql


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.dao;
 
import java.util.List;
 
import org.apache.ibatis.session.SqlSession;
 
import com.dto.Dept;
 
public class OracleMybatisDAO {
 
    public List<Dept> selectAll(SqlSession session) {
        //<select id="selectAll"
        List<Dept>    list=  session.selectList("selectAll");
        //결과가 여러개인 selsect문 실행시 selectList 함수 실행
        //DeptMapper.xml 의 id가 selsectAll인 sql을 수행
        //DeptMapper.xml 의 id="DselectAll"인 sql문 실행
        return list;
    }
 
}
 

-deptmapper

main으로 가면서 close


--error이유

SqlSession

<T>-결과가 하나일때 
<E>-여러개 일때



댓글()
loading