ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring]3/3 게시판 - 목록 보여주기 (selectList)
    WEB/BACK 2021. 10. 4. 15:32
    반응형

    저번 포스팅에서 간단하게 디비 연동확인을 위해 사용자 총 수 를 가져왔따면 이번에는 사용자 목록을 가져와보겠습니다. 

    좀 더 깔끔한 경로를 위해 user package 생성을 하였습니다. 


    결과 미리보기


    (참고)경로 변경됨- 변경필요한 부분들..
    1. UserDAO 에 return SqlSession.selectOne("com.world.therapy.user.userCount"); 로 변경
    2.mybatis-config.xml 에  type="com.world.therapy.user.UserVO" 로 변경

    폴더 구조

     

    흘러가는 순서

    1. 쿼리 

    2. dao

    3. service 

    4. controller

    5. jsp

     

    1. 목록 쿼리작성

    사용자목록 = userList추가 해줍니다. resultType은 Map입니다. 

    (관련포스팅)

    2021.05.13 - [WEB/BACK] - [sql] sql문 정리, mybatis에서 sql문 정리, left join 예,date format,마지막 로그인시간

     

    mybatis.sql>test.xml

    <mapper namespace="com.world.therapy.user">
          
          <select id="userList" resultType="Map">
                SELECT * FROM user;
          </select>
          
          <select id="userCount" resultType="Integer" >
                SELECT count(*) FROM user;
          </select>
          
    </mapper>

     

    2. dao

    목록을 반환해주기위해 List<Map<String, Object>> 형태로 담아옵니다. 

    그리고 selectList매소드를 이용합니다.

    (지난번에 count 를 가져오는건 1개만 가져오는것이여서 selectOne매소드를 사용했었습니다.)

     

    userDAO.java

    package com.world.therapy.user;
    
    import java.util.List;
    import java.util.Map;
    
    import org.apache.ibatis.session.SqlSession;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class UserDAO {
    
    	@Autowired
    	private SqlSession SqlSession;
    
    	//사용자 목록 
    	public  List<Map<String, Object>>  getUserList() throws Exception {
    		return SqlSession.selectList("com.world.therapy.user.userList");
    	}
    	
        //사용자 총 수
    	public int getTestValue() throws Exception  {
    		return SqlSession.selectOne("com.world.therapy.user.userCount");
    	}
    }

    3. service

    try catch문을 사용하여 dao에 있는 매소드를 사용합니다.

     

    userService.java

    @Repository
    public class UserService {
    
    	@Autowired
    	UserDAO userDAO;
        
    	//사용자 목록 가져오기 
    	public List<Map<String, Object>> getUserList() {
    		List<Map<String, Object>> userList = new ArrayList<Map<String, Object>>();
    		
    		try {
    			userList = userDAO.getUserList();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    		return userList;
    	}
    
    	//사용자 총 수 
    	public int getTestValue() throws Exception {
    		return userDAO.getTestValue();
    	}
    
    }

     

    4. controller

    addObject를 통해 사용자목록 데이터를 넣어서 jsp로 보냅니다.

    url주소는 value 값에 적혀있는 userList.do 입니다.

     

    @Controller
    public class UserController {
    
    	@Autowired
    	UserService userService;
    
    	@RequestMapping(value = "userList.do", method = RequestMethod.GET)
    	public ModelAndView goTestPage(Model model, HttpServletRequest request, UserVO userVO) {
    		
    		//사용자 목록 가져오기 
    		List<Map<String, Object>> userList = new ArrayList<Map<String, Object>>();
    		
    		//사용자 총 수 
    		int result = 0;
    		
    		try {
    			userList = userService.getUserList();
    			result = userService.getTestValue();
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    		ModelAndView mv = new ModelAndView();
    		mv.setViewName("/user");
    		mv.addObject("userList", userList); 
    		mv.addObject("userCount", result); 
    
    		return mv;
    	}
    
    }

     

     

     

     

     

    5. jsp

    jstl foreach 를 통해 table 을 생성해줍니다.

     

    (관련 포스팅)

    2021.10.04 - [WEB/FRONT] - [JSTL] JSTL 셋팅하는법 (pom.xml, spring, eclipse, maven)

    2021.04.28 - [WEB/FRONT] - [JSTL] , , 태그 정리 (feat. jstl if문, forEach 문, 게시판 예시)

     

    user.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <style>
    body {
    margin:5%
    }
    
    table, th, td {
      border: 1px solid black;
      border-collapse: collapse;
    }
    table {
    width: 70%;
    text-align:center;
    margin:auto;
    }
    </style>
    </head>
    <body>
    	<h1>사용자 목록</h1>
    	<h2>총 사용자 : ${userCount } 명</h2>
    	<table class="table">
        	
            <thead>
                <tr>
                    <th>No</th>
                    <th>ID</th>
                    <th>이름</th>
                    <th>핸드폰 번호</th>
                   
                </tr>
            </thead>
            <tbody>
                <c:choose>
                	<c:when test="${fn:length(userList) !=0 }">
                	<c:forEach var="item" items="${userList}" varStatus="status">
                			<tr>
                				<td>${status.count }</td>
                				<td><c:out value="${item.id}" /></td>
                				<td><c:out value="${item.name}" /></td>
                				<td><c:out value="${item.phone}" /></td>
                			</tr>
                		</c:forEach> 
                	</c:when>
        			<c:otherwise>
    					 <tr>
                   		 	<td colspan="4" >조회된 정보가 없습니다.</td>
               			 </tr>
    				</c:otherwise>
                </c:choose>
            </tbody>
        </table>
    </body>
    </html>

     

    여기까지 게시판 - 목록 작업 해보았습니다. 감사합니다.

    반응형

    댓글

Designed by Tistory.