객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 하도록 도와주는 개발 프레임워크. JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거. MyBatis에서는 프로그램에 있는 SQL 쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가짐
데이터베이스 쿼리
와 프로그래밍 언어 코드
를 분리하여 유지보수성
과 생산성
을 높이는 것
동적 쿼리
: 실행 시점에 조건에 따라 SQL 쿼리를 동적으로 생성 → 검색 조건이나 결과값 등이 동적으로 변화할 때 유용하게 사용
MyBatis
환경설정 파일(SqlSessionConfig.xml) : MyBatis
가 JDBC
코드를 실행하는데 필요한 전반에 걸친 세팅TypAlias 설정 : 사용할 모델 클래스에 대한 이름 설정 <typeAlias>
DB 연동을 위한 설정 : DataBase에 어떻게 접속할 것인지에 대한 설정 <environment>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/> // mysql 드라이버
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/> // mysql 사용
<property name="username" value="username"/> // 아이디
<property name="password" value="password"/> // 비밀번호
</bean>
<mapper>
@Mapper // 등록
// 작성
public interface UserMapper {
User getUserById(int id);
void insertUser(User user);
void updateUser(User user);
void deleteUser(int id);
}
SQL문 등록 태그
- SQL문 태그의 구성 요소 : Parameter, Result, SQL문 등록
select 결과 처리 설정
-
Mapper 인터페이스와 연결될 XML 작성
Mapper 속 메서드 별로 SQL 쿼리문 작성
<user_mapper.xml>
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="insertUser" parameterType="com.example.model.User">
INSERT INTO users (name, email) VALUES (#{name}, #{email})
</insert>
< 다른 메서드들에 대한 쿼리도 추가 가능>
</mapper>
Mapper 사용
Mapper 인터페이스를 스프링 Bean으로 등록하고 주입받아 사용
@Service
public class UserService {
private final UserMapper userMapper;
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
// 유저 조회
public User getUserById(int id) {
return userMapper.getUserById(id);
}
// 유저 등록
public void insertUser(User user) {
userMapper.insertUser(user);
}
// ... 다른 메서드들
}
출처: https://ccomccomhan.tistory.com/130 [[꼼꼼한 개발자] 꼼코더:티스토리]