2019/10/14 Framework (myBatis )
- -
1. Java Framework 란?
개발에 있어 구조화된 기술 방식
- Spring Framework
- Struts Framework : 잘 사용되지 않고 있음(기존에 사용하던 기업은 아직까지 사용하는 경우가 있음)
- my Batis Framework :데이터베이스 관련
※ Framework의 기술방식은 프로젝트를 진행 중에 그 구조화된 방식을 바꿀 수가 없다.
2. 자바 기반 프로젝트 개발방식
- Model1 방식
- MVC 패턴(Model2) 방식
->MyController
->Spring Framework
->MyController+mybatis Framework
->Spring Framework+myBatis Framework (전자정부 표준 프레임 워크)
3. myBatis
개발환경 구축이 복잡!!(단, 에러 없이 한 번만 구축해 놓으면 계속 사용할 수 있다)
전자정부 표준 프레임 워크 tool
위의 페이지에 들어가서 TOOLS 에 들어가 전에 있던 버전을 다운받자 |
1
2
3
4
4. 전자정부 표준프레임워크 3.8 기반 개발 시작하기(Getting Started)
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev3.8:gettingstarted
1
2
3
이렇게 web.xml에 insert 태그나 update 태그를 이용해서 SQL문을 작성하는 것이 myBatis 이다 |
※ Spring 버전 4, 5 버전을 설치해서 사용을 할 때는 프러그인 설치를 해서 사용해야 한다.
1. myBatisTest
eclipse 사용하던 JSP 와 거의 동일한 기능을 할 수 있지만, Spring 을 더 이용할 수 있다는 장점이 있다. |
▶ JSP 사용할 때와 마찬가지로, Dynamic Web Project를 생성하여 이용할 수 있다.
[MyBatis 라이브러리]
mybatis 이용하기 위한 lib를 다운로드하자.
경로 : Products->MyBatis 3-> mybatis-3.5.2.zip
▶ 다운로드한 라이브러리를 WEB-INF/lib 에 넣어두자
▶ myBatis는 DB에 관련된 구조화된 기술이기 때문에 JSP에서 사용하던 DBOpen을 사용하지 않을 것이다.
▶ 이제는 DBOpen 기능을 web.xml 에 코딩하여 사용하자
1) jdbc.xml
▶ 일반적인 폴더를 생성하여 생성한 폴더 안에 jdbc.xml을 만들자
jdbc.xml 파일은 DB를 연동시켜 주면서 SQL 문을 적은. xml 파일을 불러오는 역할을 할 것이다.
라이브러리를 다운받았을 때 같이 다운된 mybatis에 대한 설명이 있는 pdf에 있는 소스를 복사해 오자 3p |
<?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">
<!-- jdbc.xml 데이터베이스 연결 (DBOpen.java 와동일) -->
<configuration>
<!-- 오라클 DB -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver"
value="oracle.jdbc.driver.OracleDriver" />
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="java0514" />
<property name="password" value="1234" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="config/mem.xml" />
</mappers>
</configuration>
▶ DBOpen에 코딩했던 방식으로 dataSource에 코딩
▶ mapper 에는 DB 연동 시에 가져올 SQL 문을 가지고 있는. xml 파일 경로를 적어 주자
2) mem.xml
라이브러리를 다운받았을 때 같이 다운된 mybatis에 대한 설명이 있는 pdf에 있는 소스를 복사해 오자 21p |
<?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">
<!-- mem.xml 실행한 SQL 문을 정의해 놓은 파일 -->
<mapper namespace="mem">
</mapper>
▲ 위에서 mapper에 연결해준 경로는 mem.xml이다
<mapper></mapper>태크에는 mem이라는 테이블의 SQL 문을 작성할 것이다.
3) MemMainTest.java
package net.mem;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MemMainTest {
public static void main(String[] args) {
// MyBatis-3기반 JDBC 연습
try {
// 1) DB 환경 설정 관련 파일 가져오기
String resource="config/jdbc.xml";
InputStream is=Resources.getResourceAsStream(resource);
// 2) DB 연결하기 위한 펙토리빈 생성
//-> 기존의 DBOpen + MemberDAO 의 합성한 버전이라 생각하면 된다
SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(is);
System.out.println("DB연결 성공");
// 3) 쿼리문 생성
//PreparedStatement 와 비슷한 기능
SqlSession sql=ssf.openSession(true);
// 4) 쿼리문 실행
}catch(Exception e) {System.out.println("실패"+e);}
}//main() end
}//class end
16~17 line | DB 환경 설정에 관한 파일 resource를 inputStream 참조변수 is 에 할당 |
21~22 line | (JSP : Connection con=DBOpen.connection()) 역할을 하는 부분 |
26 line | preparedStatement 와 같은 기능 |
▶ mem이라는 테이블을 만든 후, mem에 맞는 DTO(MemDTO)를 작업을 해주자.
(단, DTO의 생성자 함수를 overloading 해주어 모든 매개변수가 들어가는 경우로 코딩)
public MemDTO() {}//기본 생성자
// 매개변수가 다른 각각의 생성자 함수 추가
//1) num
public MemDTO(int num) {
this.num=num;
}
//2) num,age
public MemDTO(int num,int age ) {
this.num=num;
this.age=age;
}
//3) name,age
public MemDTO(String name,int age ) {
this.name=name;
this.age=age;
}
//4) num, name, age
public MemDTO(int num, String name, int age ) {
this.num=num;
this.name=name;
this.age=age;
}
-행추가
4) MemmainTest.java
// 4) 쿼리문 실행
// 가) 행추가
//mem.xml 에가서 mem mapper의 insertRow 를 찾아라
int cnt=sql.insert("mem.insertRow",new MemDTO("사계절",80));
System.out.println("행추가결과: "+cnt);
생성한 sql에에 mem.insetRow 라는 함수에 MemDTO() 에 매개변수를 담아서 보내준다
5) mem.xml
<mapper namespace="mem">
<insert id="insertRow" parameterType="memDTO">
INSERT INTO mem(num,name,age)
values(mem_seq.nextval,#{name},#{age} )
<!-- DTO 의 name,age 에 접근 -->
</insert>
</mapper>
id를 insertRow, parameterType 를 memDTO 로 설정을 해준 후 <insert> 태그 안에 SQL 문을 적어 준다.
-행목록
1) MemmainTest.java
// 나) 전체목록
List list=sql.selectList("mem.selectAll");
for(int idx=0;idx<list.size();idx++) {
MemDTO dto=list.get(idx);
System.out.println(dto.getNum()+"");
System.out.println(dto.getName()+"");
System.out.println(dto.getAge()+"");
System.out.println();
2)mem.xml
<mapper namespace="mem">
<resultMap type="" id="rs">
<!--<id/> PK칼럼 지정 -->
<!-- resultSet 에 있는 값을 불러 왔다. -->
<result column="num" property=""/>
<result column="name" property=""/>
<result column="age" property=""/>
</resultMap>
<select id="selectAll" resultMap="rs">
SELECT num,name,age
FROM MEM
RODER BY num DESC
</select>
</mapper>
결과
※ mapper 에서 일반적으로 <![CDATA[ ]]> 안에 mapper 영역을 설정을 해 주어야한다
(delete TEST 에서는 <>= 수식기호들을 사용해야 하기 때문에 영역을 지정해 주자)
'JAVA 교육 > Spring' 카테고리의 다른 글
2019/10/16 Maven 라이브러리 다운 방법 (0) | 2019.10.16 |
---|---|
2019/10/16 Spring 로그인 폼 (0) | 2019.10.16 |
DTO 와 VO 의 차이점 (0) | 2019.10.16 |
2019/10/15 Spring 요청 명령어 를 받는 다양한 방식 & Filter(필터) (0) | 2019.10.15 |
2019/10/15 Spring 프로젝트생성 및 환경구축 (사칙연산 test) (0) | 2019.10.15 |
소중한 공감 감사합니다