Mybatis
개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크
* 퍼시스턴스 프레임워크(Persistence Framework)는 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들의 집합이다. 퍼시스턴스 프레임워크를 사용하면 JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적인 구동도 보장한다.
공식 사이트 : http://www.mybatis.org/mybatis-3/ko/index.html
MyBatis – 마이바티스 3 | 소개
마이바티스는 무엇인가? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 ��
mybatis.org
라이브러리 추가 (mvnrepository.com)
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
웹 프로젝트 3 Layer
Spring Boot DI
KsmartMapper.java
@Mapper
public interface KsmartMapper {
public Member getMemberList(매개변수);
}
KsmartMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.or.ksmart.mapper.KsmartMapper">
<select id="getMemberList" parameterType=“매개변수의 데이터 타입" resultType="kr.or.ksmart.vo.Member">
SELECT *
FROM tb_member
</select>
<insert id="" parameterType=“"></insert>
<update id="" parameterType=“"></update>
<delete id="" parameterType=“"></delete>
</mapper>
@Mapper interface 구현을 mapper.xml에서 함
WAS 부팅시 위 정보로 connect pool 저장
패키지 별칭을 정할 수 있다.
Member.java
package ksmart35.springboot_mybatis.domain;
public class Member {
private String memberId;
private String memberPw;
private String memberName;
private String memberLevel;
private String memberEmail;
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberPw() {
return memberPw;
}
public void setMemberPw(String memberPw) {
this.memberPw = memberPw;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getMemberLevel() {
return memberLevel;
}
public void setMemberLevel(String memberLevel) {
this.memberLevel = memberLevel;
}
public String getMemberEmail() {
return memberEmail;
}
public void setMemberEmail(String memberEmail) {
this.memberEmail = memberEmail;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Member [memberId=");
builder.append(memberId);
builder.append(", memberPw=");
builder.append(memberPw);
builder.append(", memberName=");
builder.append(memberName);
builder.append(", memberLevel=");
builder.append(memberLevel);
builder.append(", memberEmail=");
builder.append(memberEmail);
builder.append("]");
return builder.toString();
}
}
MemberMapper.java
package ksmart35.springboot_mybatis.mapper;
import org.apache.ibatis.annotations.Mapper;
import ksmart35.springboot_mybatis.domain.Member;
@Mapper
public interface MemberMapper {
//회원가입
public int addMember (Member member);
}
MemberMapper.xml
<?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="ksmart35.springboot_mybatis.mapper.MemberMapper">
<insert id="addMember" parameterType="Member">
INSERT INTO tb_member
(m_id, m_pw, m_level, m_name, m_email)
VALUES (#{memberId}
, #{memberPw}
, #{memberLevel}
, #{memberName}
, #{memberEmail})
</insert>
</mapper>
MemberService.java
package ksmart35.springboot_mybatis.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ksmart35.springboot_mybatis.domain.Member;
import ksmart35.springboot_mybatis.mapper.MemberMapper;
@Service
@Transactional
public class MemberService {
@Autowired private MemberMapper memberMapper;
public int addMember(Member member) {
return memberMapper.addMember(member);
}
}
MemberController.java
@PostMapping("/addMember")
public String addMember(Member member) {
System.out.println(member.toString());
memberService.addMember(member);
return "index";
}
화면에서 보여지는 처리과정의 역순으로 작성하는게 편함
'SpringBoot' 카테고리의 다른 글
[MyBatis] mybatis03 (0) | 2020.05.27 |
---|---|
[MyBatis] mybatis02 Dynamic SQL (0) | 2020.05.26 |
[SpringBoot] Thymeleaf layout (0) | 2020.05.19 |
[SpringBoot] DI : 의존성 주입 : autowiring / 지역변수 / 조건문 / Basic Objects (0) | 2020.05.19 |