<Insert>
1. insert를 적는다.
2. id를 준다.
3. 예전에는 쿼리에 ?를 적었지만 이제는 #{(멤버변수명)}이렇게 적는다.
예를 들어
LoginVO 안에 memberId와 password가 있다면
#{memberId}와 #{password}라고 적는다.
#{}는 내부적으로 getMemberId()를 호출해준다고 보면 쉽다.
4. 그러면 memberId에 있던 값이 그대로 memberId에 들어간다.
User class 안에 들어있는 parameter를 보낸다고 하자.
보통 한번에 한 class밖에 못보내는데
여러 class를 보내고 싶을때는 "MAP"을 사용한다.
<Select>
반환하는 파라미터의 타입을 정할 수 있다.
전체 쿼리의 결과의 타입을 정할 수 있다.
id와 Result타입이 반드시 필요하다.
============================================================
[실습] Employee 정보들을 불러와보자
먼저 EmployeeVO를 만들어 준다.
잘 호출됐나 보기위해 Logg를 걸어줬다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | package com.ktds.jgbaek.vo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class EmployeesVO { private Logger logger = LoggerFactory.getLogger(EmployeesVO.class); private int employeeId; private String firstName; private String lastName; private String email; private int salary; private double commissionPct; private String hireDate; public int getEmployeeId() { logger.info("getEmployeeId 호출됨"); return employeeId; } public void setEmployeeId(int employeeId) { logger.info("setEmployeeId 호출됨"); this.employeeId = employeeId; } public String getFirstName() { logger.info("getFirstName 호출됨"); return firstName; } public void setFirstName(String firstName) { logger.info("setFirstName 호출됨"); this.firstName = firstName; } public String getLastName() { logger.info("getLastName 호출됨"); return lastName; } public void setLastName(String lastName) { logger.info("setLastName 호출됨"); this.lastName = lastName; } public String getEmail() { logger.info("getEmail 호출됨"); return email; } public void setEmail(String email) { logger.info("setEmail 호출됨"); this.email = email; } public int getSalary() { logger.info("getSalary 호출됨"); return salary; } public void setSalary(int salary) { logger.info("setSalary 호출됨"); this.salary = salary; } public double getCommissionPct() { logger.info("getCommissionPct 호출됨"); return commissionPct; } public void setCommissionPct(double commissionPct) { logger.info("setCommissionPct 호출됨"); this.commissionPct = commissionPct; } public String getHireDate() { logger.info("getHireDate 호출됨"); return hireDate; } public void setHireDate(String hireDate) { logger.info("setHireDate 호출됨"); this.hireDate = hireDate; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?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="ArticleDAO"> <select id="getNowSystemDate" resultType="string"> SELECT SYSDATE FROM DUAL </select> <select id="getAllEmployeeInfo" resultType="com.ktds.jgbaek.vo.EmployeesVO"> SELECT EMPLOYEE_ID employeeId , FIRST_NAME firstName , LAST_NAME lastName , EMAIL email , SALARY salary , COMMISSION_PCT commissionPct , HIRE_DATE hireDate FROM EMPLOYEES </select> </mapper> | cs |
employeeInfo를 가져오는 select문을 작성해준다.
여기서 id와 resultType은 필수다.
만약 조건을 걸고 싶으면 아래와 같이 쓴다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <select id="getAllEmployeeInfo" parameterType="EmployeesVO" resultType="com.ktds.jgbaek.vo.EmployeesVO"> SELECT EMPLOYEE_ID employeeId , FIRST_NAME firstName , LAST_NAME lastName , EMAIL email , SALARY salary , COMMISSION_PCT commissionPct , HIRE_DATE hireDate FROM EMPLOYEES WHERE LAST_NAME=#{lastName} AND FIRST_NAME=#{firstName} </select> | cs |
파라미터 타입은 VO로 해줘서 VO로 넘길 수 있도록 했다.
원래 resultType처럼 parameterType을 써주어야 하는데
mybatis.xml에서 아래와 같이 Alias를 설정해주면 간단하게 쓸 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?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> <!-- 이제 com.ktds.jgbaek.vo.EmployeesVO대신 EmployeeVO써도 알아서 패키지를 찾아간다. --> <!-- 다른데서 EmployeeVO를 쓰면 제일먼저 별칭이 있나 찾아준다. --> <typeAliases> <typeAlias type="com.ktds.jgbaek.vo.EmployeesVO" alias="EmployeeVO"/> </typeAliases> <mappers> <mapper resource="/com/ktds/jgbaek/dao/impl/sql/articleDAO.xml"/> </mappers> </configuration> | cs |
1 2 3 4 5 6 7 8 9 10 11 12 | package com.ktds.jgbaek.dao; import java.util.List; import com.ktds.jgbaek.vo.EmployeesVO; public interface ArticleDAO { public String getNowSystemDate(); public List<EmployeesVO> getAllEmployeeInfo(); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @Override public List<EmployeesVO> getAllEmployeeInfo() { // String lastName = "King"; Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("firstName", "Steven"); parameters.put("lastName", "King"); // parameters.put("other", new EmployeesVO()); 이런것도 가능하다. EmployeesVO employee = new EmployeesVO(); employee.setFirstName("Steven"); employee.setLastName("King"); return getSqlSession().selectList("ArticleDAO.getAllEmployeeInfo",employee); } | cs |
다음 ArticleBiz.java 인터페이스에서
public List<EmployeesVO> getAllEmployeesInfo();를 적어준다.
그다음 ArticleBizImpl.java에서 리턴시켜준다.
@Override
public List<EmployeesVO> getAllEmployeesInfo() {
return articleDAO.getAllEmployeeInfo();
}
다음 pom.xml의 Dependencies에서 아래 두 Dependencies를 추가해준다.
버전을 맞춰준다. 1.1.2
다음 호출해줄 jsp 창에서
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>을 적어주고
<!-- 는 공백 한칸 -->
<c:forEach items="${allEmployees}" var="employee">
${employee.employeeId}
${employee.firstName}
${employee.lastName}
${employee.email}
${employee.hireDate}
${employee.salary}<br/>
</c:forEach>
을 적어주면 끝~~
폴더 구성은
이렇게 되어있다.
결과창 :
'Back-end > Spring' 카테고리의 다른 글
[Spring] 게시판 만들기 기본 (2) | 2016.04.21 |
---|---|
[Spring] Query ( choose, when, if, where, foreach ) (0) | 2016.04.20 |
[Spring] DB를 사용하는 방법 - myBatis 개념 (0) | 2016.04.20 |
[Spring] ORM : MyBatis 연동 2 (0) | 2016.04.19 |
[Spring] ORM : MyBatis 연동 (0) | 2016.04.19 |