새소식

JAVA 교육/Spring

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

http://spring.io 

 

spring.io

Let's build a better Enterprise. Spring helps development teams everywhere build simple, portable, fast and flexible JVM-based systems and applications.

spring.io

 위의 페이지에 들어가서 TOOLS 에 들어가 전에 있던 버전을 다운받아봅시다

 


1

 

 

2

 

 

3

 

 

4

 

 

4. 전자정부 표준프레임워크 3.8 기반 개발 시작하기(Getting Started)

https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev3.8:gettingstarted

 

egovframework:dev3.8:gettingstarted [eGovFrame]

본 가이드는 전자정부 표준프레임워크 기반의 단순한 응용프로그램(HelloWorld)를 직접 실습해 봄으로써 빠른 시간 내에 전자정부 프레임워크의 기본 기능을 파악하기 위하여 제공한다. 본 가이드의 사용자는 java 및 spring framework에 대한 기본적인 지식이 있다는 것을 가정하였다. 아래의 3가지 단계에 따라 순서대로 따라하기 방식으로 진행된다. 개발환경 설치 : 실습을 위한 개발환경을 구축한다. 프로젝트 생성 : 제공한 샘플 프로젝트를 이용

www.egovframe.go.kr

1

 

2

 

3

 

이렇게 web.xml에 insert 태그나 update 태그를 이용해서 SQL문을 작성하는 것이 myBatis 이다

 

※ Spring 버전 4, 5 버전을 설치해서 사용을 할 때는 프러그인 설치를 해서 사용해야 합니다.

 


1. myBatisTest

 eclipse 사용하던 JSP 와 거의 동일한 기능을 할 수 있지만, Spring 을  더 이용할 수 있다는 장점이 있다.

 

 JSP 사용할 때와 마찬가지로, Dynamic Web Project를 생성하여 이용할 수 있습니다.

 

[MyBatis 라이브러리]

https://blog.mybatis.org 

 

The MyBatis Blog

A blog about the the MyBatis data mapper framework.

blog.mybatis.org

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 해주어 모든 매개변수가 들어가는 경우로 코딩)

 

<code>  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;
    }
</code>

   

 -행추가

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' 카테고리의 다른 글

Spring 프로젝트생성 및 환경구축 (사칙연산 test)  (0) 2019.11.20
Spring 파일 업로드  (0) 2019.11.20
2019/10/17 mymelon  (0) 2019.10.17
2019/10/17 AJax 사용법 2 (JSON, Cookie)  (0) 2019.10.17
2019/10/16 Ajax 사용법  (0) 2019.10.16
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.