티스토리 뷰

728x90
Map타입으로도 가능하니
List타입으로도 한 번 시도해보자

 

 

 

 

 

기본설정
<?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">
				<!-- 마리아db 연결하기! -->
				<property name="driver" value="org.mariadb.jdbc.Driver" />
				<property name="url" value="jdbc:mariadb://localhost:3306/mydb3" />
				<property name="username" value="root" />
				<property name="password" value="0118" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- mapper에서 member.xml파일 가져옴 -->
		<mapper resource="kr/co/goodee39/dao/member.xml" />
	</mappers>
</configuration>
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

//기본설정
public class SqlSessionManager {
	public static SqlSessionFactory sqlSession;
	
	static {
		//config.xml에서 mapper로 member.xml가져온 파일을 여기서 받아옴
		String resource = "kr/co/goodee39/config/config.xml";
		Reader reader;
		
		try {
			reader = Resources.getResourceAsReader(resource);
			sqlSession = new SqlSessionFactoryBuilder().build(reader);
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static SqlSessionFactory getSqlSession() {
		return sqlSession;
	}
}
package kr.co.goodee39.vo;

import org.apache.ibatis.type.Alias;

public class MemberVO {
	
	/*
	 * `ID` INT(10) UNSIGNED ZEROFILL NULL DEFAULT NULL,
	 * `PASSWORD` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
	 * `NAME` VARCmemberHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
	 * `AGE` INT(11) NULL DEFAULT NULL,
	 * `GENDER` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci',
	 * `EMAIL` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb3_general_ci'
	 */
	
	//DB컬럼에 대한 필드 설정
	int id;
	String name;
	String password;
	int age;
	String gender;
	String email;
	
	//필드에 대한 GETTER, SETTER 메서드 설정
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
	
}

 

 

 

쿼리문 선언하기
다수의 row를 출력하기 위해 resultType만 설정해주는데,
map과 VO타입으로 설정한다
<?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">
  
  <!-- namespace는 member.xml을 칭함 -->
  <mapper namespace="member">
  
  	<!-- 다수의 row를 가져오기 -->
  	<select id="getList" resultType="map">
  		SELECT * FROM member
  	</select>
  	
  	<select id="getListByVO" resultType="mvo">
  		SELECT * FROM member
  	</select>
 
  </mapper>

 

 

 

List타입 내부에 Map 설정해 list 변수 선언하고, null로 초기화
VO를 제너럴로 갖는 List 타입 list2 변수 선언후 null 초기화
list, list2에 각각 쿼리문에서 설정한 map, mvo resultType맞게 id 설정해 쿼리 불러온다
<%@page import="kr.co.goodee39.vo.MemberVO"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@page import="org.apache.ibatis.session.SqlSession"%>
<%@page import="kr.co.goodee39.config.SqlSessionManager"%>
<%@page import="org.apache.ibatis.session.SqlSessionFactory"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	SqlSessionFactory sqlSessionFactory = SqlSessionManager.getSqlSession();
	SqlSession sqlSession = sqlSessionFactory.openSession();

	List<Map<String, Object>> list = null;
	List<MemberVO> list2 = null;
		
	try{
		list = sqlSession.selectList("member.getList");
		list2 = sqlSession.selectList("member.getListByVO");
	} 
	catch(Exception e){
		e.printStackTrace();
	}
	%>
    
<%for(Map<String, Object> map : list) { %>
	<p>이름 : <%=map.get("NAME") %></p>
	<p>아이디 : <%=map.get("ID") %></p>
<%} %>

<%for(MemberVO vo : list2) { %>
	<p>이름 : <%=vo.getName()%></p>
	<p>아이디 : <%=vo.getId()%></p>
<%} %>
</body>
</html>

 

 

결과

두 버전 모두 다 잘 출력됨!
member테이블

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함