-개발환경-
IDE : Eclipse 2018-12 (4.10.0) Spring Tool Suite : 3.9.7.RELEASE WAS : Pivotal tc Server Developer Edition v4.0 (피보탈 톰캣 서버) DB : Oracle 11g |
-설정-
-STS 브라우저 테스트환경 설정해주기-
WINDOW => Web Browser => Chrome 선택해서 테스트 환경을 크롬으로 잡아주기
-한글깨짐방`지 태그 추가해주기-
web.xml 파일에서 아래 태그들 추가.
web.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
|
cs |
Mybatis 구성을 위해 pom.xml 에서 다음을 설정해준다.
pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<!-- 오라클 드라이버 외부 저장소 설정 -->
<repositories>
<repository>
<id>oracle</id>
<name>ORACLE JDBC Repository</name>
<url>http://maven.jahia.org/maven2</url>
</repository>
</repositories>
<!-- oracle -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.0.1</version>
</dependency>
<!-- spring jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
|
cs |
Mybatis 구성을 위해 servlet-context.xml 에서 다음을 설정해준다.
servlet-context.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<beans:bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<beans:property name="username" value="Shin"/>
<beans:property name="password" value="0000"/>
</beans:bean>
<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource"></beans:property>
<beans:property name="mapperLocations" value="classpath:com/koreait/dao/*.xml"></beans:property>
<beans:property name="configLocation" value="classpath:mybatis-config.xml"></beans:property>
</beans:bean>
<beans:bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<beans:constructor-arg index="0" ref="sqlSessionFactory"></beans:constructor-arg>
</beans:bean>
|
cs |
1~6 : 데이터 베이스 연결 정보를 설정하는 DriverManagerDataSource 클래스의 bean을 설정한다.
8~12 : db 연결 정보와 실행할 sql 명령이 저장된 xml 파일의 경로를 기억하는 bean을 설정한다.
mapper 설정 정보를 기억하는 bean.
10 : 실행할 sql 명령이 저장된 xml파일의 경로
11 : typeAliases 설정 정보가 저장된 xml 파일의 경로를 설정한다. (의무 x ) (요약어설정)
14~16 : 윗 정보들을 종합한 템플릿 bean.
typeAliases(요약어) 설정을 위해서 resources 폴더에 적당한 (mybatis-config.xml)파일을 생성후 다음을 추가한다.
mybatis-config.xml
1
2
3
4
5
6
7
|
<?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>
<typeAliases>
<typeAlias alias="vo" type="com.koreait.vo.MvcboardVO"/>
</typeAliases>
</configuration>
|
cs |
mvcboard.xml
1
2
3
4
5
6
7
|
<?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.koreait.dao.MybatisDAO">
<insert id="insert" parameterType="vo">
~sql 명렁~
</insert>
</mapper>
|
cs |
해당 파일은 , 실행할 sql 명령이 저장된 xml파일이다.
3 : namespace에는 반드시 mapper 역할을 하는 인터페이스의 이름을 풀 패키지 이름으로 적어야 한다.
mapper 역할을 하는 MybatisDAO.java
1
2
3
|
public interface MybatisDAO {
void insert(MvcboardVO mvcboardVO);
}
|
cs |
mapper로 사용되는 interface의 추상 메소드 형식은 resultType id(parameterType)와 같은 형식으로 만들어 사용한다.
추상 메소드 이름이 XML 파일의 sql명령을 식별하는 id로 사용되고,
추상 메소드의 인수로 지정된 데이터가 xml 파일의 sql 명령으로 전달된다.
xml 파일의 parameterType 속성에는 1개의 자료형만 쓸 수 있는데 ,
여러개의 데이터를 넘겨야 할 경우
인수로 넘어가는 데이터를 모두 멤버 변수로 가지고 있는 클래스를 사용하면된다. 2번째 줄처럼.
mvcboard.xml
1
2
3
4
5
6
7
8
|
<?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.koreait.dao.MybatisDAO">
<insert id="insert" parameterType="vo">
insert into mvcboard (idx,name,subject,content,ref,lev,seq) values
(mvcboard_idx_seq.nextval,#{name},#{subject},#{content},mvcboard_idx_seq.currval,0,0)
</insert>
</mapper>
|
cs |
4 : mapper역할을 하는 인터페이스에서 추상메소드이름이 이곳 id 속성값이다.
parameterType 속성값은 mybatis-config.xml 에서 설정한 요약어이다.
HomeController.java
1
2
3
4
|
@Controller
public class HomeController {
@Autowired
public SqlSession sqlSession;
|
cs |
4 : servlet-context.xml 파일에서 생성한 mybatis bean을 사용하기 위해
sqlSession 인터페이스 타입의 변수를 선언한다.
JDBC Template과 다르게 Setter가 필요없다. 자동으로 넣어준다.
HomeController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@RequestMapping("/insertOK")
public String insertOK(HttpServletRequest request, Model model) {
MybatisDAO mapper = sqlSession.getMapper(MybatisDAO.class);
AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX.xml");
MvcboardVO mvcboardVO = ctx.getBean("mvcboardVO", MvcboardVO.class);
mvcboardVO.setName(request.getParameter("name"));
mvcboardVO.setSubject(request.getParameter("subject"));
mvcboardVO.setContent(request.getParameter("content"));
mapper.insert(mvcboardVO);
return "redirect:list";
}
|
cs |
3 : mapper로 사용할 interface 변수에 mybatis mapper를 얻어온다.
8~10 : MvcboardVO클래스의 bean에 insert.jsp(view) 에서 request 객체로 넘어온 데이터를 저장한다.
12 : sql 명령을 실행하는 메소드를 호출한다.
'21년이전 > SPRING' 카테고리의 다른 글
SPRING - AJAX(JSON) (0) | 2021.05.25 |
---|---|
SPRING - 자주사용되는 데이터 전달객체들 + 어노테이션+Lombok (0) | 2021.05.18 |
SPRING - (MVC) JDBC Template을 이용해보자. (0) | 2021.05.05 |
SPRING - (MVC) DBCP 게시글 예제 (0) | 2021.05.01 |
SPRING - (MVC) 컨트롤러-뷰 의 데이터 흐름 (0) | 2021.04.29 |