③ 원래 $ 있던 곳에 복붙한다. - $ 지우고 복붙할 것 - 공백 없을 것 <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/> <property name="username" value="SCOTT"/> <property name="password" value="TIGER"/>
<?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="DeptMapper">
<select id="findAll" resultType="DeptDTO">
select deptno, dname, loc
from dept
</select>
<select id="findAllPage" resultType="DeptDTO">
select deptno, dname, loc
from dept
order by deptno
</select>
<select id="findByDeptno" resultType="DeptDTO" parameterType="int">
select deptno, dname, loc
from dept
where deptno = #{deptno}
</select>
<select id="findByDeptnoAndDname" resultType="DeptDTO" parameterType="DeptDTO">
select deptno, dname, loc
from dept
where deptno = #{deptno} or dname=#{dname}
</select>
<select id="findByDeptnoAndDnameMap" resultType="DeptDTO" parameterType="hashmap">
select deptno, dname, loc
from dept
where deptno = #{xxx} or dname=#{yyy}
</select>
</mapper>
DeptDTO.java
//dept 테이블의 하나의 행(레코드)을 저장하는 용도
public class DeptDTO {
// DeptDTO 클래스의 변수명은 dept테이블의 컬럼명과 동일하게 지정
int deptno; // dept테이블의 deptno 컬럼 저장
String dname; // dept테이블의 dname 컬럼 저장
String loc; // dept테이블의 loc 컬럼 저장
// 생성자
public DeptDTO() {}
public DeptDTO(int deptno, String dname, String loc) {
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
// getter, setter
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
// toString()
@Override
public String toString() {
return deptno+"\t"+dname+"\t"+loc;
}
}
DeptMain.java
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class DeptMain {
public static void main(String[] args) throws Exception {
// Configuration.xml 파일 읽기
String resource = "Configuration.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
// findByDeptno 호출
DeptDTO dto = session.selectOne("DeptMapper.findByDeptno", 10);
System.out.println(dto);
// findAll 호출
List<DeptDTO> list = session.selectList("DeptMapper.findAll");
for (DeptDTO xxx : list) {
System.out.println(xxx);
}
System.out.println("##########################################");
// findByDeptnoAndDname
DeptDTO dto2 = new DeptDTO(); // 파라미터를 dto2에 넣어주는 작업
dto2.setDeptno(10);
dto2.setDname("인사");
List<DeptDTO> list2 = session.selectList("DeptMapper.findByDeptnoAndDname", dto2);
for (DeptDTO xxx : list2) {
System.out.println(xxx);
}
System.out.println("##########################################");
// findByDeptnoAndDnameMap
HashMap<String, Object> map = // 두 개를 다 받아줘야하니까 object로
new HashMap<>();
map.put("xxx", 10);
map.put("yyy", "인사");
List<DeptDTO> list3 = session.selectList("DeptMapper.findByDeptnoAndDnameMap", map);
for (DeptDTO xxx : list3) {
System.out.println(xxx);
}
System.out.println("##########################################");
// findAllPage
RowBounds bounds = new RowBounds(1, 3);
List<DeptDTO> list4 = session.selectList("DeptMapper.findAllPage", null, bounds);
for (DeptDTO xxx : list4) {
System.out.println(xxx);
}
session.close();
}
}