# Spring11

제로·2023년 1월 22일
0

Spring

목록 보기
11/18

1. mybatis를 통한 DB 연동 처리

1. 기본 환경 구성

1) mybatis라는 DB연동 처리하는 프레임워크를 활용해서 DB연동 sql 처리

2) 컨테이너에 DB연결 객체 선언
DBCP연결 객체를 통해 드라이버, 아이피, 계정, 패스워드를 통해 연결

3) mybatis 프레임워크 설정

  • 위 선언된 연결객체를 통해서 mybatis 공통 xml 선언
  • 사용하게될 sql을 처리하는 xml를 선언할 위치를 선언

4) 사용하게될 DAO 인터페이스 폴드 선언 : 이 폴드에서 선언된 인터페이스가 실제 dao객체와 연동

2. 처리 프로세스

1) service ==> dao 인터페이스 ==> xml에 의해 선언된 내용을 프레임워크로 dao로 만듦

3. 개발순서

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 객체를 생성

  • 인터페이스명 ==> namespace명
  • 요소객체 안에 사용할 sql 처리
  • 메서드명 ==> id
  • 메서드의 매개변수 ==> parameterType
  • 메서드의 리턴값 ==> resultType

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>
  


profile
아자아자 화이팅

0개의 댓글

관련 채용 정보