«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

장미의 개발일기

Mybatis 마이바티스 다운로드 및 환경 설정 본문

개발일기/JSP 프로그래밍 (Java 웹프로그래밍)

Mybatis 마이바티스 다운로드 및 환경 설정

민장미 2023. 5. 25. 13:16

** 아래 포스팅의 예제 =>  model 1 타입의 게시판 사이트를 제작한 후, 그걸 복사해와서 

 마이바티스를 테스트 해보는 포스팅 입니다.  **

 

 

아래 모델1방식으로 웹 게시판 만들기 

JSP 프로그래밍: 모델1 방식의 웹 개발하기(게시판 만들기) - 1 FBoard (tistory.com)

 

JSP 프로그래밍: 모델1 방식의 웹 개발하기(게시판 만들기) - 1 FBoard

*Model 1 방식: JSP 프로그래밍에서 Model과 View를 따로 분리하지 않고 같이 섞어서 개발하는 방식이다. => UI(디자인)와 비즈니스 로직을 함께 처리하는 방식이라 코드의 재사용성이 떨어진다 => 유지

jangmicoding.tistory.com

 

JSP 프로그래밍: 모델1 방식의 웹 개발하기(게시판 만들기) - 2 FBoard (tistory.com)

 

JSP 프로그래밍: 모델1 방식의 웹 개발하기(게시판 만들기) - 2 FBoard

모델 1 방식은 이제는 거의 안 쓰고 매우 번거로운 과정이지만 개념이해를 위해서 반드시 코딩을 해봐야 한다. 그 다음으로 모델2 방식, 스프링 프레임워크, 부트 순으로 넘어가면 된다. 이번 포

jangmicoding.tistory.com

 

 

==============================================================

 

 

0. 오라클 DB에  테이블 및 시퀀스 생성: 

--fboard
/*1.요구사항
미니게시판
-번호, 제목, 작성자,내용,
-조회수,
-작성자의 아이피,비밀번호
-작성날짜
*/
CREATE TABLE FBOARD(
	NUM NUMBER CONSTRAINT FBOARD_NUM_PK PRIMARY KEY,
	SUBJECT VARCHAR2(100) NOT NULL,
	WRITER VARCHAR2(30) NOT NULL,
	PWD VARCHAR2(10) NOT NULL,
	CONTENT VARCHAR2(200),
	HIT NUMBER(10),
	REIP VARCHAR2(34),
	FDATE DATE
	);

CREATE SEQUENCE FBOARD_SEQ
INCREMENT BY 1
START WITH 1;

 

1. 마이바티스 사이트에서 zip파일 다운로드

 

 

Releases · mybatis/mybatis-3

MyBatis SQL mapper framework for Java. Contribute to mybatis/mybatis-3 development by creating an account on GitHub.

github.com

https://github.com/mybatis/mybatis-3/releases

 

 

 

2. Java(EE) 프로젝트의 WEB-INF/ lib 에 드라이버 복붙 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. META-INF 에 context.xml 저장

 

 

 

 

 

 

 

context.xml  의 코드: 

username, passwrod에는 오라클 DB에 접속계정의 아이디와 비번을 적으면 된다. 

=> web.xml에 context-param으로 설정하는 방법도 있다. 

web.xml 파일에서 <context-param> 이 부분을  따로 context.xml 파일로 설정이 가능하다고 이해하면 된다.

**web-inf / meta-inf  둘 다 중요한 폴더 
1. web-inf   
  -web-inf 의 lib 폴더 :웹 애플리케이션에서 사용되는 외부 라이브러리(jar)을 삽입하는 곳
  -web.xml이 여기에 존재   








2. meta-inf 
   -java 애플리케이션의 메타데이터 정보를 포함하는 디렉토리 
   -meta-inf폴더의 MANIFEST.MF: JAR 파일의 메타데이터 정보를 포함하는 파일
  - context.xml : 특정 웹 애플리케이션에 대한 컨텍스트 설정을 정의하는 파일
     (오라클 연결 설정 정보를 여기에 작성)

 

**context.xml과 web.xml

 

 

context.xml web.xml
웹 애플리케이션의 개별적인 컨텍스트 설정을 포함 웹 애플리케이션의 전체 구성 정보를 포함
특정 웹 애플리케이션의 컨텍스트에만 적용 특정 웹 애플리케이션에 대한 전체 설정
개별로 따로 만들어주고(파일 이름도
반드시 context)
meta-inf 폴더 안에 위치 시켜야한다.
다이나믹 프로젝트 생성시, xml 옵션을 체크하면 자동으로 생성되고, 
web-inf 폴더 안에 위치한다. 
주로 데이터베이스 연결, 리소스 설정, 환경 변수 등과 같은 웹 애플리케이션의 컨텍스트 관련 설정을 포함  

 

마이바티스가 제공하는 객체 목록 

 

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<Context>  <!-- myora는 내가 지어줄수있지만, jdbc는 바꾸면안됌 -->
	<Resource name="jdbc/myora" 
		auth="Container"
		type="javax.sql.DataSource"
		driverClassName="oracle.jdbc.driver.OracleDriver"
		url="jdbc:oracle:thin:@localhost:1521:orcl"
		username=""
		password=""
		maxActive="20"
		maxIdle="10"
		maxWait="-1"
/>
</Context>

 

--뺴먹은 거 : !!

3-2. FactoryService  class 생성

package factory;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class FactoryService {
	private static SqlSessionFactory factory;
	//config.xml이 mapper 즉 sql문까지 포함되고 있기 때문에 불러와서 사용가능한 객체 
	// sqlsession 을 반환*******8
	
	static {
		try(Reader reader = Resources.getResourceAsReader("config/config.xml");) {
			factory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	public static SqlSessionFactory getFactory() {
		return factory;
	}
		
	
}

 

 

 

4. VO 객체 생성을 위해 VO 클래스 제작  

package vo;

public class FBoardVO {
	
/*	NUM NUMBER CONSTRAINT FBOARD_NUM_PK PRIMARY KEY,
	SUBJECT VARCHAR2(100) NOT NULL,
	WRITER VARCHAR2(30) NOT NULL,
	PWD VARCHAR2(10) NOT NULL,
	CONTENT VARCHAR2(200),
	HIT NUMBER(10),
	REIP VARCHAR2(34),
	FDATE DATE
	); **복붙을 이용하라 
	*/
	private int num;
	private String subject;
	private String writer;
	private String pwd;
	private String content;
	private int hit; //조회수
	private String reip;  //사용자의 ip
	private String fdate;
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public int getHit() {
		return hit;
	}
	public void setHit(int hit) {
		this.hit = hit;
	}
	public String getReip() {
		return reip;
	}
	public void setReip(String reip) {
		this.reip = reip;
	}
	public String getFdate() {
		return fdate;
	}
	public void setFdate(String fdate) {
		this.fdate = fdate;
	} 
	
	
}//pu

 

 

 

 

5. config.xml 환경설정

 

https://mybatis.org/mybatis-3/ko/getting-started.html

에서 코드를 복사해온다.

 마이바티스 드라이버와 같이 있는 라이브러리 파일(pdf)에서 복사해와도 된다.

 

MyBatis – 마이바티스 3 | 시작하기

 

mybatis.org

 

아래의 "~~congig.dtd" 까지 만 복사해와서 그 뒤는 작성해도 좋고, 전부 작성해와도 무관

<?xml version="1.0" encoding="UTF-8" ?>
<!-- src/config/config.xml -->
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="">
    <environment id="">
      <transactionManager type="JDBC"/>
      <dataSource type="JNDI">
        <property name="data_source" value="java:comp/env/jdbc/myora"/>
      </dataSource>
    </environment>
  </environments>
<!-- 작업할 매퍼는 꼭 등록 해줘야 한다!!! -->   
<mappers>
	<mapper resource="mapper/tboard.xml"/>
</mappers>
</configuration>

<mappers> 이부분 작성 전에

mapper로 사용 할 tboard.xml 파일을 작성해줘야한다. (스프링으로 넘어가면 할 필요 없음)

 

 

 

6. mapper 설정 :  fboard.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

 

역시 위의 사이트나 라이브러리 PDF 파일에서 코드를 찾아 복붙해온다.

여기까지 한 후에 위의 config.xml로 돌아가서 

<mappers>
<mapper resource="mapper/tboard.xml"/>
</mappers>

이 부분을 작성해준다. 

 

=================== 여기까지가 마이 바티스 기본 설정 ==============================

7. mapper  :  fboard.xml  에서 sql문 작성 

 

DB에 데이터 저장하기 : 게시판에 글 작성하기!   => 테스트

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="tboard">
	<insert id="add" parameterType="vo.FBoardVO">
	INSERT INTO FBOARD VALUES(FBOARD_SEQ.NEXTVAL, #{subject},#{writer},#{pwd},#{content}, 0, #{reip},SYSDATE) 
	</insert>
</mapper>

 

  *  namespace => 오라클 DB에 저장되어 있는 테이블 이름 

 * < > 안에 insert, update, delete 등 SQL 명령문 / id 지정

 

 

*parameterTpye =>  자바의 메소드에서  필요한 인자 값의 자료형 

*resultType => 자바의 메소드에서 반환되는 값의 자료형  

 

ex) 위  코드의 경우

자바의 메소드가 => public void addFBoard(FBoardVO vo) {   }  일 때 , 

FBoardVO vo =>  (인자값)  , 즉  parameterTpye  FBoardVO 다.

mapper 파일에 "vo.FBoardVO" 로 넣어주면 된다.

 

ex) 

자바의 메소드가  => public FBoardVO detailFBoard(int num) { return v; } 일 때, 

이 메소드의 반환형은 FBoardVO형이다. 

 parameterTpye을 "v.FBoardVO"로 작성해주면 된다. 

 

+추가 포인트 ****:  자바에서의 메소드 반환형이 불리언형인 경우: 

public boolean checkPwd(FBoardVO vo) { return false; }

오라클에서는 불리언 자료형이 없으니  true = 1, false= 0 으로 생각하면 된다.

즉 반환형 parameterTpye을  "int"로 작성해줘야 한다. 

 

 

 

 

미리 만들어놓은 게시판 jsp 파일들로 테스트를 해보자.

(나중에 따로 게시판 제작 포스팅을 할 예정)

 

 

 

 

1 write.jsp 을 실행하여 글 작성 

 

 

 2 list.jsp로 넘어가며 글이 생성 

 

 

 

3 sql로 테이블 안에 저장 됐는지 확인 (비번은 1이다)