본문 바로가기

Java/java 기초

Mybatis 시작하기

반응형

https://github.com/loy124/SpringStudy

 

loy124/SpringStudy

스프링 ajax 활용 및 Mybatis 예제. Contribute to loy124/SpringStudy development by creating an account on GitHub.

github.com

프로젝트 구조 

Mybatis는 DAO를 만들어서 불러오는 형태의 수고를  조금 덜어주기 위해  만들어진 프레임 워크이다.

 

config.xml 셋팅

 

mybatis를 사용하기위해서는  mybatis.jar와 ojdbc6.jar

config.xml과 이를 사용하는 Mapper.xml이 필요하다.

 

config.xml

 

mappers mapper 에서 쿼리문을 작성할 xml을 지정해준다

MemberMapper.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>
	<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="hr"/>
				<property name="password" value="hr"/>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
			
		<mapper resource="mybatis/MemberMapper.xml"/>
		<mapper resource="mybatis/BbsMapper.xml"/>
	</mappers>
	
</configuration>

MemberDto

package dto;


/*CREATE TABLE MEMBERDTO(
		ID VARCHAR2(50) NOT NULL,
		PWD VARCHAR2(50) NOT NULL,
		EMAIL VARCHAR2(50) NOT NULL
	)*/
public class MemberDto {
	private String id;
	private String pwd;
	private String email;
	
	public MemberDto() {
		// TODO Auto-generated constructor stub
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Override
	public String toString() {
		return "MemberDto [id=" + id + ", pwd=" + pwd + ", email=" + email + "]";
	}

	public MemberDto(String id, String pwd, String email) {
		super();
		this.id = id;
		this.pwd = pwd;
		this.email = email;
	}
	
	
}

 

 

 

Mapper 부분에서는 DB테이블을 삽입,수정, 삭제등을 진행하는 쿼리문들이 담겨있다

#을 붙여주면 자동적으로 ''를 붙여주는 개념 $를 붙여주면 범위(Between)등에서 사용한다고 한다 

 

<insert  id>등에서 id값을 지정해주면 java부분에서 해당 id 값으로 호출해서 db쿼리문 실행이 가능하다.

 

VALUES에 들어가는 id값과 pwd값 email값은 Dto의 변수명과 일치해야 한다

 

 

 

MemberMapper.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="mybatis.MemberMapper">
  
  <insert id="add" parameterType="dto.MemberDto">
  	INSERT INTO MEMBERDTO(ID, PWD, EMAIL)
  	VALUES(#{id}, #{pwd}, #{email})
  </insert>
  <!-- #을 붙여주면 ''를 붙여주고 $를 붙여주면 숫자  -->
  <delete id="remove" parameterType="java.lang.String">
  	DELETE FROM MEMBERDTO 
  	WHERE ID = #{id}
  </delete>
  
  <!-- 하나만 찾을떄는 java.lang.String 값들을 다 가져올떄는 dto.MemberDto -->
  <delete id="removeObj" parameterType="dto.MemberDto">
  	DELETE FROM MEMBERDTO 
  	WHERE ID = #{id}
  </delete>
  
  
  <select id="find" parameterType="java.lang.String" resultType="dto.MemberDto">
  SELECT * FROM MEMBERDTO
  WHERE ID=#{id}
  </select>
  
  <select id="allList" resultType="dto.MemberDto">
  SELECT * FROM MEMBERDTO
  </select>
  
  </mapper>
  

 

 

MainClass.java

package main;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import dto.BbsDto;
import dto.BbsParam;
import dto.MemberDto;

public class MainClass {
	public static void main(String[] args) throws IOException {

		// mybatis 설정 파일을 읽어들인다.
		InputStream is = Resources.getResourceAsStream("mybatis/config.xml");

		// SqlSessionFactory 객체 취득
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

		// tomcat의 session과 DB의 session은 서로 다르다
		// SqlSession 객체를 취득 <-- 실질적으로 데이터를
		SqlSession session = factory.openSession();

		 //insert
		 //MemberDto dto = new MemberDto("aaa", "111", "AAA");
//		MemberDto dto = new MemberDto("bbb", "222", "BBB");
//		MemberDto dto = new MemberDto("ccc", "333", "CCC");
		
		//MemberMapper.xml의 아이디값
//		int n = session.insert("add", dto);
//		
//		if(n > 0) {
//			session.commit();
//			System.out.println("추가 성공");
//		}else {
//			session.rollback();
//			System.out.println("추가 실패");
//		}
//
		
		
//		String id = "bbb";
//		int n = session.delete("remove", id);
//
//		if (n > 0) {
//			session.commit();
//			System.out.println("삭제 성공");
//		} else {
//			session.rollback();
//			System.out.println("삭제 실패");
//		}

		/*
		 * MemberDto dto = new MemberDto("ccc", null, ""); int n =
		 * session.delete("removeObj", dto);
		 * 
		 * if (n > 0) { session.commit(); System.out.println("삭제 성공"); } else {
		 * session.rollback(); System.out.println("삭제 실패"); }
		 */
		//업데이트 해보기
		
		// update
		
		/*
		 * // select
		 * 
		 * String id = "ccc"; MemberDto dto = session.selectOne("find", id);
		 * System.out.println(dto.toString()); // select list
		 * 
		 * List<MemberDto> list = session.selectList("allList");
		 * 
		 * for(MemberDto dto1 : list) { System.out.println(dto1.toString()); }
		 */
		
		//BBS
		
		// insert, delete, select, selectList, update
		//insert
//		BbsDto bbsDto = new BbsDto("loy124", "제목", "내용");
//		
//		int count = session.insert("insertBbs", bbsDto);
//		
//		if(count > 0) {
//			System.out.println("게시글 추가가 완료되었습니다");
//		}else {
//			System.out.println("추가 실패!!!");
//		}
		
		//delete(del 1로 업데이트)
//		int seq = 81;
//		
//		int count = session.update("removeBbs", seq);
//				if(count > 0) {
//			System.out.println("게시글 삭제가 완료되었습니다");
//		}else {
//			System.out.println("삭제 실패!!!");
//		}
//		
//		
		
		
		// search
//		String keyword = "내용"; //본인 DB안의 테이블 내용
//		BbsParam bbp = new BbsParam("content", keyword);
////		검색결과는 하나 이상이기때문에 무조건 List로 받아와야 한다
//		List<BbsDto> searchList = session.selectList("search", bbp);
//		for(int i = 0; i <searchList.size(); i++) {
//			System.out.println(searchList.toString());
//		}
		
		
		

	}
}






반응형

'Java > java 기초' 카테고리의 다른 글

Spring에서 Ajax활용하기  (0) 2020.02.25
Spring 셋팅 설정  (0) 2020.02.24
JSP, JSTL(el, core), Ajax로 각각 만든 고객 목록 관리 리스트(MVC2)  (0) 2020.01.24
jsp tag  (0) 2020.01.23
Core tag  (0) 2020.01.23