728x90
반응형
Mybatis SqlSessionFactory 생성
Mybatis-config.xml, mapper.xml 파일 생성을 완료했다면, DAO에서 세션 생성을 위한 getSqlSessionFactory() 메소드를 작성
private SqlSessionFactory getSqlSessionFactory() {
String resource = "mybatis/mybatis-config.xml";
SqlSessionFactory factory = null;
try {
InputStream inputStream =
Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder =
new SqlSessionFactoryBuilder();
factory = builder.build(inputStream);
} catch (IOException e) {
}
return factory;
}
SqlSessionFactoryBuilder 메소드
메소드 구분 | 설명 |
build(InputStream) | config.xml파일만 불러옴 |
build(InputStream, String) | config.xml파일과 지정한 DB를 불러옴 |
build(InputStream, Properties) | config.xml파일과 프로퍼티로 설정한 내용 으로 불러옴(“${key명}”) |
build(InputStream, String, Properties) | config.xml파일과 지정한 DB, properties파 일 불러옴 |
build(configuration) | configurateion객체에 설정한 내용을 불러옴 |
Mybatis SqlSession 생성
DAO 메소드는 SqlSqssionFactory를 사용하여 SqlSession 객체를 생성
public Member selectMember(Member m) {
Member member = null;
SqlSession session = null;
try {
session = getSqlSessionFactory().openSession(false);
// 매퍼 파일 안에 작성된 쿼리문 실행시키고 결과를 받는다.
member = session.selectOne("Member.loginCheck", m);
System.out.println(session);
} catch (Exception e) {
e.printStackTrace();
} finally{
session.close();
}
return member;
}
Mybatis SqlSession
Mybatis SqlSessionFactory를 통해 세션을 생성하는 openSession() 메소드는 여러가지 형식으로 오버로딩 되어 있는데, 그 중 대표적인 것은 다음과 같음
메소드 구분 | 설명 |
openSession() | 기본값을 통해 SqlSession을 생성 |
openSession(Boolean) | SqlSession 생성 시 AutoCommit 여부를 true / false로 지정할 수 있음 (기본값 true) |
openSession(Connection) | 직접 생성한 Connection 객체를 이용해 SqlSession을 생성 (기본값 X) |
openSession(ExecutorType) | 쿼리를 실행할 때 PreparedStatement의 재사용 여부를 설정 (기본값 ExecutorType.SIMPLE) |
SqlSession을 통한 쿼리 실행 예시
생성한 SqlSession 객체의 메소드를 통해 정의한 쿼리에 접근
public Member selectMember(Member m) {
Member member = null;
SqlSession session = null;
try {
session = getSqlSessionFactory().openSession(false);
// 매퍼 파일 안에 작성된 쿼리문 실행시키고 결과를 받는다.
member = session.selectOne("Member.loginCheck", m);
System.out.println(session);
} catch (Exception e) {
e.printStackTrace();
} finally{
session.close();
}
return member;
}
SqlSession을 통한 mapper 쿼리 실행
mapper.xml에서 선언한 쿼리구문을 SqlSession에서 실행하는 메소드는 총 6가지가 있음
메소드 명 | 설명 |
Object selectOne (String mapper, Object param) | 하나의 객체만을 받고자 할 때 사용 |
List selectList (String mapper, Object param) | 결과에 대한 값을 List로 받고자 할 때 사용 |
Map selectMap (String mapper, Object param, String mapKey) | 결과에 대한 값을 Map으로 받고자 할 때 사용 (마지막 인자로 키로 사용될 컬럼을 명시) |
int insert (String mapper, Object param) | Database에 데이터를 입력하고자 할 때 사용 |
int update (String mapper, Object param) | Database의 데이터를 수정하고자 할 때 사용 |
int delete (String mapper, Object param) | Database의 데이터를 삭제하고자 할 때 사용 |
반응형
'프로그래밍 > Mybatis' 카테고리의 다른 글
Mybatis의 isNull, isEmpty (0) | 2021.08.25 |
---|---|
Cause: java.sql.SQLException: Invalid parameter object type. Expected 'java.lang.String' but found 'java.util.LinkedHashMap'.; (0) | 2021.08.24 |
09.25(Mapper 설정) (0) | 2020.09.25 |
09.24(Mybatis-config 설정) (0) | 2020.09.24 |
09.23(Mybatis) (0) | 2020.09.23 |