Spring Framework 사용하기 (7)

오사라이


  • 테이블 조인 및 얻는 방법

  • 준비



    테이블 재작성



    우선은, 전회까지 사용하고 있던 테이블을 일단 삭제해 아래와 같은 테이블 작성 스크립트를 실행합니다.
    CREATE TABLE department (
    id INTEGER PRIMARY KEY,
    name VARCHAR(40)
    );
    CREATE TABLE user (
    id INTEGER PRIMARY KEY,
    name VARCHAR(40),
    department_id INTEGER,
    FOREIGN KEY (department_id)
    REFERENCES department (id)
    );
    

    테이블에 데이터 삽입


    INSERT INTO department (id,name)
    VALUES (1,'人事部');
    
    INSERT INTO department (id,name)
    VALUES (2,'営業部');
    
    INSERT INTO user (id,name,department_id)
    VALUES (1,'田中',1);
    
    INSERT INTO user (id,name,department_id)
    VALUES (2,'佐藤',1);
    
    INSERT INTO user (id,name,department_id)
    VALUES (3,'鈴木',2);
    

    모델 삭제



    마지막 기사에서 만든 모델을 삭제합니다.


    JPA를 사용하여 모델링



    모델 만들기
    전회와 마찬가지로 JPA를 사용하여 모델을 작성합니다.
    “model” 패키지를 오른쪽 클릭 ⇒ “New” ⇒ “other…”를 선택합니다.


    [Next]를 누릅니다.


    [Next]를 누릅니다. 다음 화면의 [Package] 필드에 실제 Package 경로를 올바르게 입력하십시오.


    마침을 누릅니다.


    출력 내용 변경



    로그인 후 마지막으로 출력한 이름뿐만 아니라 부서명을 출력합니다.

    LoginController.java
    package com.example.HelloWorld;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.validation.BindingResult;
    import org.springframework.validation.annotation.Validated;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import java.util.List;
    
    import com.example.HelloWorld.model.User;
    import com.example.HelloWorld.repository.UserRepository;
    import com.example.HelloWorld.validation.CheckOrder;
    
    @Controller
    public class LoginController {
    //    @Autowired
    ////    UserService userService;
        @Autowired
        private UserRepository userRep;
    
    
        @RequestMapping(value = "/login", method = RequestMethod.POST)
            public String login(Model model, @Validated(CheckOrder.class) @ModelAttribute("loginForm") LoginForm loginForm, BindingResult result) {
                if(result.hasErrors()) {
                    return "index";
                }
    
                List<User> userList = userRep.findById(loginForm.getUserId());
                    if(userList.size() > 0) {
                        model.addAttribute("userName", userList.get(0).getName());
                        model.addAttribute("departmentName", userList.get(0).getDepartment().getName());
                            return "top";
                    } else {
                            return "index";
                        }
                }
    }
    


    top.jsp 편집



    설정한 부서명을 화면에 출력합니다.
    top.jsp를 아래와 같이 변경합니다.

    top.jsp
    <!DOCTYPE html>
    
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
    
    <html>
        <head>
            <meta charset="utf-8">
            <title>トップ</title>
        </head>
        <body>
            ようこそ<c:out value="${departmentName}" /><c:out value="${userName}" />さん
        </body>
    </html>
    

    실행 결과



    실행
    사용자 ID에 2를 입력합니다. 로그인을 누르십시오.




    tips



    index.jsp의 패스워드의 input type="password"로 하면(자), 패스워드는 입력시에 숨겨집니다.

    참고한 링크



      다음 번



    다음에는 Spring security를 ​​이용한 사용자 인증을 소개합니다.

    좋은 웹페이지 즐겨찾기