- 2019/10/14 Framework (myBatis )2019년 10월 14일
- 조별하
- 작성자
- 2019.10.14.:03
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 다음글이전글이전 글이 없습니다.댓글