1) mybatis라는 DB연동 처리하는 프레임워크를 활용해서 DB연동 sql 처리
2) 컨테이너에 DB연결 객체 선언
DBCP연결 객체를 통해 드라이버, 아이피, 계정, 패스워드를 통해 연결
3) mybatis 프레임워크 설정
4) 사용하게될 DAO 인터페이스 폴드 선언 : 이 폴드에서 선언된 인터페이스가 실제 dao객체와 연동
1) service ==> dao 인터페이스 ==> xml에 의해 선언된 내용을 프레임워크로 dao로 만듦
1) sql 작성
2) sql 처리를 위한 DTO(VO)를 작성
3) db처리할 인터페이스 선언(dao패키지 하위에)
springweb.a05_mvc.a03_dao
public List getEmpList(Emp sch);
4) 공통 mybatis.Srping.xml에 공통 vo 등록, 각 업무단위 mapper.xml을 추가 및 선언
5) mapper.xml 에서선언된 인터페이스를 상속하여 실제 사용할 DAO 객체를 생성
6) service에서 dao 호출
7) controller에서 service 호출
8) controller에 요청 및 모델데이터 선언
9) view(jsp) 구현 모델 데이터 출력
@@ dispatcher-servlet.xml : 컨테이너
// dbcp(database connection pool) 연결
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</bean>
// mybatis 연동
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
// dbcp와 연결
<property name="dataSource" ref="dataSource"/>
// mybatis 공통 xml과 연동처리
<property name="configLocation" value="classpath:resource/mybatis.Spring.xml"/>
</bean>
// mybatis에 의해 자동 생성될 dao 패키지 연결
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="springweb.a05_mvc.a03_dao"/>
</bean>
@@ mybatis.Spring.xml
<?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>
// mapper.xml에서 사용할 vo클래스 호출 및 alias로 선언
<typeAliases>
<typeAlias alias="emp" type="springweb.z01_vo.Emp"/>
</typeAliases>
// 사용할 mapper.xml 저장
<mappers>
<mapper resource="a01_diexp/mybatis/resource/A01_EmpMapper.xml"/>
</mappers>
</configuration>
@@ A01_EmpMapper.xml : 인터페이스를 상속받은 실제 dao객체를 생성하는 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="a01_diexp.mybatis.dao.A01_EmpDao">
// id : 메서드명 , resultType : 출력할 데이터의 데이터형식, parameterType : 매개변수 데이터 타입
<select id="getEmpList" resultType="emp" parameterType="emp">
// 작성한 sql문
select * from emp100
where ename like '%'||#{ename}||'%'
and job like '%'||#{job}||'%'
</select>
</mapper>
@@ A01_EmpDao.java : 인터페이스
public interface A01_EmpDao {
public List<Emp> getEmpList(Emp sch);
}
@@ A01_EmpService.java : 서비스단
@Service
public class A01_EmpService {
@Autowired
private A01_EmpDao dao;
// 자바단 로직 처리
public List<Emp> getEmpList(Emp sch){
if(sch.getEname()==null) sch.setEname("");
if(sch.getJob()==null) sch.setJob("");
return dao.getEmpList(sch);
};
}
@@ A01_EmpController.java : 컨트롤러 단
@Controller("empCtrl")
public class A01_EmpController {
@Autowired
private A01_EmpService service;
// http://localhost:7080/springweb/empList.do
@RequestMapping("empListMy.do")
public String empList(Emp sch, Model d) {
// 모델데이터 생성 및 view단 호출
d.addAttribute("empList",service.getEmpList(sch));
return "\\WEB-INF\\views\\a05_mvc\\a01_empList.jsp";
}
}
@@ a01_empList.jsp : view단
<c:forEach var="emp" items="${empList}">
<tr><td>${emp.empno }</td><td>${emp.ename }</td><td>${emp.job }</td>
<td>${emp.hiredate }</td><td>${emp.mgr }</td>
<td>${emp.sal }</td><td>${emp.comm }</td><td>${emp.deptno }</td>
</tr>
</c:forEach>