Member 라는 클래스를 선언하고 Member 객체를 생성한 후 그 정보를 DB 테이블에 insert하고 select 해본다.
public class Member {
private String id;
private String password;
private String name;
public Member(String id, String password, String name) {
this.id = id;
this.password = password;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Member{" +
"id='" + id + '\'' +
", password='" + password + '\'' +
", name='" + name + '\'' +
'}';
}
}
Member 클래스의 필드명(id, password, name)를 DB 테이블의 컬럼명과 동일하게 선언한다.
<?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="MemberMapper">
<!-- Member 정보 insert -->
<insert id="insertMember" parameterType="Member">
insert into tb_member (
id,
password,
name
)
values (
#{id},
#{password},
#{name}
)
</insert>
<!-- Member 정보 select -->
<select id="selectMemberById" parameterType="string" resultType="Member">
select
id,
password,
name
from tb_member
where id = #{id}
</select>
</mapper>
매퍼파일에서 #{id}, #{password}, #{name} 등은 변수로 사용되며 #{} 기호 안에 들어가는 이름은 Member 클래스에 선언한 필드의 이름과 같아야 한다.
public interface MemberMapper {
public int insertMember(Member member);
public Member selectMemberById(String id);
}
MemberMapper 인터페이스에서 선언한 추상 메소드의 이름, 리턴타입, 매개변수 등은 memberMapper.xml 매퍼파일에서 지정한 id, resultType, parameterType과 매칭된다.
매칭 | MemberMapper 인터페이스 | memberMapper.xml 매퍼파일 |
메소드명 <-> id | selectMemberById | selectMemberById |
리턴타입 <-> resultType | Member | Member 혹은 지정한 alias |
매개변수 <-> parameterType | (String id) | String 혹은 string |
<?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>
<properties resource="db.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>
<mappers>
<mapper resource="memberMapper.xml" />
</mappers>
</configuration>
mybatis-config.xml 설정파일 내에 <mappers> 태그와 <mapper> 태그를 사용하여 사용하려는 매퍼 파일의 경로를 지정해 준다.
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class MemberDAO {
private SqlSessionFactory factory = MybatisConfig.getSqlSessionFactory();
public void insertMember(Member member) {
try (SqlSession session = factory.openSession()) {
MemberMapper mapper = session.getMapper(MemberMapper.class);
mapper.insertMember(member);
// insert한 내용을 커밋하여 영구 저장한다.
session.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
public Member selectMemberById(String id) {
Member member = null;
try (SqlSession session = factory.openSession()) {
MemberMapper mapper = session.getMapper(MemberMapper.class);
member = mapper.selectMemberById(id);
} catch (Exception e) {
e.printStackTrace();
}
return member;
}
public static void main(String[] args) {
MemberDAO dao = new MemberDAO();
Member member = new Member("hong", "1234", "홍길동");
// DB에 Member 객체 정보 insert 하기
dao.insertMember(member);
// hong 이라는 아이디를 가진 Member 정보 select 하기
Member searchedMember = dao.selectMemberById("hong");
System.out.println(searchedMember);
}
}
※ 주의 : insert 후 session.commit() 을 하지 않으면 SqlSession이 close() 되면서 롤백이 된다. 따라서 insert, update, delete 명령 후에는 항상 commit() 을 실행하여 변경된 트렌젝션을 영구반영 해야한다.
DB 테이블에 저장되었고 selectMemberById() 결과도 출력되었다.
Mybatis 객체 형식으로 update, delete 하기 (0) | 2022.05.10 |
---|---|
Mybatis 데이터베이스 접속 (0) | 2022.05.04 |
Mybatis 개발환경 설정(with Intellij) (0) | 2022.05.03 |
댓글 영역