728x90
반응형
2021.03.12 최초작성
2023.04.17 수정
@Repository
1) DAO(Data Access Object)나 Repository Bean을 나타내는 데 사용
2) @Repository 어노테이션을 사용하면 해당 클래스가 DB와 상호작용하는 클래스임을 나타낼 수 있음
3) 해당 클래스를 스프링 빈으로 등록하면 해당 클래스에서 제공하는 DB 연동 기능을 스프링에서 관리할 수 있음
4) root-context.xml에 SqlSessionFactory와 SqlSessionTemplate 빈 객체 주입 및 데이터소스 설정
root-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/erp?serverTimezone=UTC" />
<property name="username" value="admin" />
<property name="password" value="admin" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/mybatis-config.xml" />
<property name="mapperLocations" value="classpath:sqlMappers/**/*Mapper.xml"/>
</bean>
<!-- SqlSession 객체 주입 -->
<!-- sqlSession은 sqlSessionFactory를 참조 -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
</beans>
@Repository 샘플코드
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class ExampleDaoImpl {
@Autowired
SqlSession sqlSession;
public void insertData(String data) {
sqlSession.insert("example.insertData", data);
}
}
MyBatis Mapper 샘플코드
<?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="example">
<insert id="insertData" parameterType="String">
INSERT INTO EX_TABLE SET data = #{data}
</insert>
</mapper>
@Mapper
1) MyBatis 3.0부터 지원하는 기능
2) @Mapper 어노테이션을 선언한 interface를 생성하면 따로 implements(구현) 생략
3) @Mapper 어노테이션에 생성한 API의 이름과 MyBatis Mapper에 작성한 Sql ID는 반드시 일치해야 함
4) MyBatis Mapper의 namespace는 인터페이스의 풀패키지 경로를 입력
@Mapper 샘플코드
import org.apache.ibatis.anntations.Mapper;
@Mapper
public class ExampleMapper {
@Override
public void insertData(String data);
}
MyBatis Mapper 샘플코드
<?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="com.example.ex.mapper.ExampleMapper">
<insert id="insertData" parameterType="String">
INSERT INTO EX_TABLE SET data = #{data}
</insert>
</mapper>
728x90
반응형
'백엔드 > 스프링' 카테고리의 다른 글
[Spring] HTTP 응답상태코드 정리 (Error 정리) (0) | 2021.07.02 |
---|---|
[BE/Spring] ModelAndView와 ModelMap의 차이 (0) | 2021.03.18 |
댓글