<dependencies></dependencies>
추가<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>bsearch</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-servlet-api -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>9.0.71</version>
</dependency>
<!-- mybatis -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>
<!-- mySql -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
</plugin>
</plugins>
</build>
</project>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>도서 검색 키워드</h1>
<!--form은 거의 post를 사용함 -->
<form action="bookSearch" method="post">
도서명 키워드 : <input type ="text" name="keyword">
<br><br>
<input type="radio" name="price" value="10000">10,0000원 미만<br>
<input type="radio" name="price" value="20000">20,0000원 미만<br>
<input type="radio" name="price" value="30000">30,0000원 미만<br>
<input type="radio" name="price" value="40000">40,0000원 미만<br>
<br><br>
<button type="submit">도서 검색!</button>
</form>
</body>
</html>
// 한글 처리
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
// 1. 입력 받기
String keyword = request.getParameter("keyword");
String price = request.getParameter("price");
package vo;
public class BookVO {
private String btitle;
private String bprice;
private String bisbn;
private String bauthor;
public BookVO(String btitle, String bprice, String bisbn, String bauthor) {
super();
this.btitle = btitle;
this.bprice = bprice;
this.bisbn = bisbn;
this.bauthor = bauthor;
}
// public BookVO(String btitle, String bprice) {
// super();
// this.btitle = btitle;
// this.bprice = bprice;
// }
public String getBisbn() {
return bisbn;
}
public void setBisbn(String bisbn) {
this.bisbn = bisbn;
}
public String getBauthor() {
return bauthor;
}
public void setBauthor(String bauthor) {
this.bauthor = bauthor;
}
public BookVO() {
}
public String getBtitle() {
return btitle;
}
public void setBtitle(String btitle) {
this.btitle = btitle;
}
public String getBprice() {
return bprice;
}
public void setBprice(String bprice) {
this.bprice = bprice;
}
}
package mybatis;
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 MyBatisConnectionFactory {
private static SqlSessionFactory sqlSessionFactory;
static {
String resource = "./SqlMapConfig.xml"; //이 파일을 가져다가 reader를 뽑고
try {
Reader reader = Resources.getResourceAsReader(resource);
if(sqlSessionFactory == null) {
// 하나만 만들도록 하는 꺼에요!
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //빌더를 통해 reader를 가져감
// 빌더 만들기 ! builder를 통해 factory 만들기
// 이때 설정정보 넣어줘야되요~~(reader부분)
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// private static SqlSessionFactory sqlSessionFactory;가
// private 이라서 getter 생성
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
<?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>
<!-- property는 하나만 설정할거에요
외부파일을 이용해서 데이터베이스 접속정보를 가져올 거에요
외부파일을 하나 만들 거고 => driver.properties 파일을 만들거에요 -->
<properties resource="./driver.properties" />
<!-- MyBatis에 대한 기본 세팅정보가 나옴
MyBatis가 동작하는 기본적인 방식에 대한 세팅정보가 있음 -->
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
<!-- Data가 없을 경우 Null로 처리할 거에요 -->
</settings>
<!-- 별명지정하는게 나옴. 타이핑을 줄이기 위해 사용함. xml코드 내에서 사용 -->
<typeAliases>
<typeAlias type="vo.BookVO" alias="Book" />
</typeAliases>
<!-- DB 연결 정보 선언 -->
<!-- <environments default="development"> -->
<environments default="development">
<!-- 개발하기 위한 연결정보 -->
<environment id="development">
<!-- 연결 환경에 대한 세부사항이 나오면 됨 -->
<transactionManager type="JDBC">
<!-- type="JDBC"이면, 수동으로 transaction을 처리 지금 우리가 하고 있는 방식임. commit(),
rollback() 명령어를 직접 처리하는 방식 type="MANAGED" 이면, 자동으로 transaciton을 관리 Container가
transaction을 관리함 -->
</transactionManager>
<dataSource type="POOLED">
<!-- Connection Pool을 사용할지 말지를 결정. 일반적으로 POOLED를 명시해서 connection pool을
사용! -->
<!-- 실제 데이터베이스 연결정보가 들어감 -->
<!-- $와 #의 차이점? -->
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${user}" />
<property name="password" value="${password}" />
<!-- 데이터베이스 connection pool에 대한 설정이 나올 수 있음 -->
</dataSource>
</environment>
</environments>
<!-- mapping된 SQL구문이 있는 XML 파일에 대한 설정 -->
<mappers>
<mapper resource="./sqlmap/Book.xml" />
</mappers>
<!-- 운영하기 위한 연결정보 <environment id="operation"> </environment> <environment
id="test"> </environment> -->
<!-- </environments> -->
</configuration>
driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://127.0.0.1:3306/library?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
user = root
password = test1234
(7. DAO - MVC 할 때)