[MyBatis( 마이바티스)]
- 자바 개발자의 JDBC를 대체하는 퍼시스턴스 프레임 워크(데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크)
ㄴ 보통 ORM 프레임워크로 오해하는 경우가 있으나 , ORM 프레임 워크는 실제 DB쿼리를 객체로 관리하여 객체의 활용에 따른 쿼리 자동생성을 할 수 있다.
- 퍼시스턴스 프레임워크 : SQL을 직접 설계하고 XML로 별도로 관리하고 JDBC API를 내부적으로 처리해주기 때문에 개발자가 직접 JDBC 를 사용할 때의 중복 작업 대부분을 없애준다라는 장점이 있지만 쿼리가 자동 생성되거나 하지는 않음.
[MyBatis의 특징]
1. JDBC 프레임 워크이다.
2. 개발자는 SQL을 작성하고 mybatis는 JDBC를 사용해서 실행한다.
3. JDBC를 사용할 때의 try/catch/finally/try/catch를 사용할 필요가 없다.
4. SQL 매퍼(mapper)다. (ORM프레임 워크는 데이터베이스 객체를 자바 객체로 매핑함으로써 객체간의 관계를 바탕으로 SQL을 자동으로 생성해주지만, mybatis는 SQL을 명시해주어야한다.
ibatis로부터 파생된 mybatis
[핵심 설정 파일]
1. sqlMapConfig.xml (mybatis) : driver경로, 계정명 비밀번호 등...(회사에서 mybatis파일이 없다면 sqlMapConfig파일을 찾는다)
2. SqlMap.xml : sql문
[세팅하기]
1.메이븐 중앙 저장소에서 MyBatis / MyBatis Spring추가 (porm.xml)
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
2. src/main/java에 xml파일 추가 > 이름은 mybatis-config로 한다.
mybatis-config에 아래의 내용을 추가한다.
- 최소한 하나의매퍼가 필요함. <mappers resource에 등록>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <mappers> <mapper resource="sqlMap/empSQL.xml"/> </mappers> </configuration>
3. 위 mapper resource에 맞춰 mapper xml 파일 생성
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
4. dispatcher-servlet에 등록
<!-- myBatis --> <!-- 1. dataSource --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property> <property name="username" value="scott"></property> <property name="password" value="1234"></property> </bean> <!-- 2. 트랜잭션 관리자 등록 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 3. 마이바티스 설정 --> <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:/mybatis-config.xml"></property> </bean> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactoryBean"></constructor-arg> </bean>
개발 순서
1. db스키마 설계
2. 디자인설계(컨텐츠 뼈대)
3. 기능구현 (DAO,DTO설계)
3-1. DTO설계
3-2. SQL ID 선정
3-3. SQL 작성
3-4. DAO 설계
4.컨트롤러
4-1. 명령어 선정.
4-2. 커맨드 클래스
4-3. 등록
5. (3의) empSQL.xml에 쿼리 추가
namespace = 카테고리, 마이바티스에서 의무.필수 속성. 패키지 명명 규칙과 비슷하다.

**DAOImple에 private SqlSessionTemplate sqlMap; 멤버변수 선언
기본 인자 생성자 생성.

6. dispatcher-servlet 에 dao등록할때
<constructor-arg>
<ref bean="sqlSessionTemplate"/>
</constructor-arg>

'개발자 > 백엔드 웹 개발자 과정(국비)' 카테고리의 다른 글
| [Spring Boot] 스프링 부트 설치, 세팅 (0) | 2023.03.09 |
|---|---|
| [spring]알아두면 좋을것들 (0) | 2023.03.08 |
| [Spring]파일 업로드, 파일 다운로드 (0) | 2023.03.03 |
| [Spring] 검색기능, @RequestMapping 메서드 리턴 타입 (0) | 2023.03.02 |
| [Spring] DTO안 DTO , 진입메서드 (0) | 2023.02.27 |


