https://github.com/loy124/SpringStudy
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 |