반응형
1) [DTO] MyMember.java
package xyz.itwill.dto;
//create table mymember(id varchar2(20) primary key, name varchar2(50), phone varchar2(20), email varchar2(100));
/*
이름 널? 유형
----- -------- -------------
ID NOT NULL VARCHAR2(20)
NAME VARCHAR2(50)
PHONE VARCHAR2(20)
EMAIL VARCHAR2(100)
*/
public class MyMember {
private String id;
private String name;
private String phone;
private String email;
public MyMember() {
// TODO Auto-generated constructor stub
}
public String getId() {return id;}
public void setId(String id) {this.id = id;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public String getPhone() {return phone;}
public void setPhone(String phone) {this.phone = phone;}
public String getEmail() {return email;
}public void setEmail(String email) {this.email = email;}
}
2) [Mapper] MyMemberInterfaceMapper.java
package xyz.itwill.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import xyz.itwill.dto.MyMember;
//mybatis 프레임워크에서는 인터페이스를 이용하여 매퍼 설정 가능
//=> 추상메소드에 매퍼 어노테이션(Mapper Annotation)을 사용하여 SQL 명령 등록
public interface MyMemberInterfaceMapper {
//@Insert : 추상메소드에 INSERT 명령을 등록하기 위한 어노테이션
//value속성 : 추상메소드에 등록할 SQL 명령을 속성값으로 설정
//=> 주의) value 속성외에 다른 속성이 없는 경우 속성값만 작성 가능
//@Insert(value = "insert into mymember values (#{id},#{name},#{phone},#{email})")
@Insert("insert into mymember values(#{id},#{name},#{phone},#{email})")
//추상메소드의 매개변수에는 SQL 명령에 필요한 객체(값)를 전달하기 위해 선언하며, 반환형은 등록된 SQL 명령을 전달하여 실행한 결과를 제공받기 위해 Java 자료형을 선언
//=> XML기반의 매퍼파일과 비교
//=> @Insert : insert엘리먼트
//=> 반환형 : resultType
//=> 메소드 : elementId
//=> 매개변수 : parameterType
int insertMember(MyMember member);
//@Update : 추상메소드에 UPDATE 명령을 등록하기 위한 어노테이션
@Update("update mymember set name=#{name}, phone=#{phone}, email=#{email} where id=#{id}")
int updateMember(MyMember member);
//@Delete : 추상메소드에 DELETE 명령을 등록하기 위한 어노테이션
@Delete("delete from mymember where id=#{id}")
int deleteMember(String id);
//@Select : 추상메소드에 SELECT 명령을 등록하기 위한 어노테이션
@Select("select * from mymember where id=#{id}")
MyMember selectMember(String id);
//xml기반의 매퍼파일과는 다르게 반환형에 반환받을 "List"객체 명시해줌
@Select("select * from mymember order by id")
List<MyMember> selectMemberList();
}
3) [DAO] MyMemberInterfaceDAO.java
package xyz.itwill.dao;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import xyz.itwill.dto.MyMember;
import xyz.itwill.mapper.MyMemberInterfaceMapper;
public class MyMemberInterfaceDAO {
private static MyMemberInterfaceDAO _dao;
private MyMemberInterfaceDAO() {
// TODO Auto-generated constructor stub
}
static {
_dao = new MyMemberInterfaceDAO();
}
public static MyMemberInterfaceDAO getDAO() {
return _dao;
}
//SqlSessionFactory를 반환하는 메소드
private SqlSessionFactory getSessionFactory() {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
throw new IllegalArgumentException();
}
return new SqlSessionFactoryBuilder().build(inputStream);
}
//회원정보를 전달받아 MYMEMBER 테이블에 삽입하고 삽입행의 갯수를 반환하는 메소드
public int insertMember(MyMember member) {
SqlSession sqlSession = getSessionFactory().openSession(true);
try {
//SqlSession.getMapper(Class<T> clazz) : 메모리에 저장된 인터페이스(매퍼)를 제공받아 Mapper 객체로 생성하여 반환한는 메소드
//클래즈 만드는 방법 3가지 : getClass / class.forName /
// => 매개변수에 [XXX.class] 형식으로 인터페이스를 직접 표현하여 class 객체(clazz)를 전달
//Mapper 객체 : 인터페이스를 제공받아 생성하며 추상메소드를 호출하여 등록된 SQL
//명령을 전달하여 실행하고 실행결과를 매핑하여 반환하기 위한 기능을 제공하는 객체
return sqlSession.getMapper(MyMemberInterfaceMapper.class).insertMember(member);
} finally {
sqlSession.close();
}
}
//회원정보를 전달받아 MYMEMBER 테이블에 저장된 회원정보를 변경하고 변경행의 갯수를 반환하는 메소드
public int updateMember(MyMember member) {
SqlSession sqlSession = getSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberInterfaceMapper.class).updateMember(member);
} finally {
sqlSession.close();
}
}
//아이디를 전달받아 MYMEMBER 테이블에 저장된 회원정보를 삭제하고 삭제행의 갯수를 반환하는 메소드
public int deleteMember(String id) {
SqlSession sqlSession = getSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberInterfaceMapper.class).deleteMember(id);
} finally {
sqlSession.close();
}
}
//아이디를 전달받아 MYMEMBER 테이블에 저장된 회원정보를 검색하여 반환하는 메소드
public MyMember selectMember(String id) {
SqlSession sqlSession = getSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberInterfaceMapper.class).selectMember(id);
} finally {
sqlSession.close();
}
}
//MYMEMBER 테이블에 저장된 모든 회원정보를 검색하여 반환하는 메소드
public List<MyMember> selectMemberList() {
SqlSession sqlSession = getSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberInterfaceMapper.class).selectMemberList();
} finally {
sqlSession.close();
}
}
}
반응형
'framework > mybatis' 카테고리의 다른 글
[mybatis] 7. XML+INTERFACE 매퍼(매퍼바인딩) 1 (MYUSER) (1) | 2024.07.21 |
---|---|
[mybatis] 6. XML + 인터페이스 기반의 매퍼파일 (MyMember 출력 프로그램) (1) | 2024.07.21 |
[mybatis] 4. XML기반의 매퍼파일 (MyMember 출력 프로그램) (0) | 2024.07.20 |
[mybatis] 3. XML기반의 매퍼파일 (Student 출력 프로그램) (0) | 2024.07.20 |
[mybatis] 2. MYBATIS 환경설정 (0) | 2024.07.19 |