자바 오브젝트와 SQL사이의 자동 매핑 기능을 지원하는 프레임워크
MyBatis는 JDBC를 통해 RDMBS에 엑세스하는 작업을 캡슐화 및 중복 작업을 간소화해줌
XML 파일의 형태인 Mapper를 통해 SQL 쿼리가 분리되는 환경을 제공하고 Java 객체와 매핑하는 작업을 도와줌
package com.shop.cafe.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
import com.shop.cafe.dto.Member;
@Repository
public class MemberDao {
@Value("${spring.datasource.driver-class-name}")
private String DB_DRIVER;
@Value("${spring.datasource.url}")
private String DB_URL;
@Value("${spring.datasource.username}")
private String DB_USER;
@Value("${spring.datasource.password}")
private String DB_PW;
public void insertMember(Member m) throws Exception {
Class.forName(DB_DRIVER);
String sql="insert into member(nickname, pwd, email) values(?,?,?)";
try(
Connection con=DriverManager.getConnection(DB_URL,DB_USER,DB_PW);
PreparedStatement stmt=con.prepareStatement(sql);
){
stmt.setString(1, m.getNickname());
stmt.setString(2, m.getPwd());
stmt.setString(3, m.getEmail());
int i=stmt.executeUpdate();
System.out.println(i+"행이 insert되었습니다");
}
}
}
1.먼저 myBaits의 라이브러리를 얻기 위해 pom.xml에 아래 코드를 추가한다.
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>3.0.4</version>
<scope>test</scope>
</dependency>
2.그 후 resources폴더에 mapper라는 폴더를 만든 후 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">
<mapper namespace="com.shop.cafe.dao.ProductDao">
<select id="getAllProducts" resultType="Product" >
select * from product
</select>
</mapper>
여기서 mapper의 namespace에는 com.shop.cafe.dao.ProductDao 인터페이스와 연결된다는 것을 의미하도록 넣어줍니다.
현재 getAllProducts는 select문을 구사하기 때문에 select 태그로 감싸줘 resultType은 return Type을 넣어준다 그 후 select문 안에
product를 가져오도록 select * from product를 넣어준다.
3.application.properties에 등록하기
logging.level.com.shop.cafe=debug //로깅 레벨을 DEBUG로 설정
mybatis.type-aliases-package=com.shop.cafe.dto
mybatis.mapper-locations=mapper/*.xml //MyBatis 매퍼 XML 파일을 자동으로 로드합니다.
mybatis.type-aliases-package=com.shop.cafe.dto
별칭을 사용하면 매퍼 XML에서 클래스의 전체 경로를 생략할 수 있습니다.
사용 예시
//사용안함
<select id="getAllProducts" resultType="com.shop.cafe.dto.Product">
//사용 후
<select id="getAllProducts" resultType="Product">
4.Dao 파일을 interface로 바꿈
package com.shop.cafe.dao;
import java.util.*;
import org.apache.ibatis.annotations.Mapper;
import com.shop.cafe.dto.Product;
@Mapper
public interface ProductDao {
public List<Product> getAllProducts() throws Exception;
}


관리자가 아닌 이가 웹 사이트에 악성 스크립트를 삽입할 수 있는 취약점을 가지고 있음.

window.opener는 현재 창을 열어준 부모 창(원래 탭)의 window 객체를 가리킵니다. 그것을 fake.html로 변환해 악성페이지로 만듭니다.
이미지를 받아와 fake 페이지를 넣어 링크 클릭 시 fake 페이지로 이동 시켜 로그인 하면 정보를 빼오는 실습
:5500에서 :8080으로부터 받은 JSESSIONID를 저장했어도 다음 요청 시 쿠키를 가지고 가지 못하는 문제
토큰으로 해결하기