본문 바로가기
CLASS/SPRING,JSTL

#8-1 / point table => Module

by hingu 2024. 7. 23.

#7에서 만든 point table 가지고 놀거임

 

👀 [ 진짜 제작 순서 ]

  1. table 설계
  2. DAO 설계
  3. Controller
  4. View 
  5. Module
  6. Controller가 Module 호출 후 Databae return받음
  7. Controller가 View(JSP)로 Data 를 이관함

=> 여기서 구조를 하나라도 어기면 안됨

 

⚡ MVC 형태의 template을 이용한 리스트 출력 - selectList

❗ template 은 close() ❌

- Controller
package api;

//~import 생략

@Controller
public class adminmain3 {
	
	@Resource(name="pointmodule") //pointmodule 모듈 호출하는놈
	private point_module pm; 
	//윗줄(@Resource~) 없으면 작동X , 해당 module을 필드에 객체 생성 후 적용
	
	//data 전체 리스트
	@GetMapping("/point_select.do")
	public String point_select(Model m) {
		try {
			List<pointdao> result = pm.all_list();
			m.addAttribute("result",result);
			
		}catch(Exception e) {
			e.printStackTrace();
			System.out.println("Data Module error!!");
		}
		
		return null;
	}
	
}


@Resource
: 해당 프로젝트에 대한 module 호출하는 놈



- Module (point_module.java)

package api;

//~ import 생략

@Repository("pointmodule")
public class point_module {
	//DB연결
	@Resource(name="template") //name : dbconfig의 SqlSessionTemplate id
	private SqlSessionTemplate tm;
	
	//전체 포인트 내역
	public List<pointdao> all_list(){
		List<pointdao> data = new ArrayList<pointdao>();
		//selectList로 데이터 전체를 가져옴
		data = tm.selectList("datadb.point_select"); //mapper.xml의 가져올 query문 id
		//tm.close(); //얜 close X 큰일남 ㅠ 
		
		return data;
	}
	
}


@Repository
: 호출 받는 놈 


- View (point_select.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="cr" uri="http://java.sun.com/jsp/jstl/core" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC 형태의 template을 이용한 리스트 출력</title>
</head>
<body>

<ul>
	<cr:forEach var="lists" items="${result}">
	<li>${lists.uid}</li>
	</cr:forEach>
</ul>

</body>
</html>
요렇게 출력댐




controller에 딱 이렇게 MVC형태만 들어감

 

 

MVC 형태의 template을 이용한 [사용자 아이디에 대한 한명의 포인트 내역] 출력 - selectOne

❗ selectList , selectMap을 제외하곤 배열이 아님 !! Array나  ArrayList 로 받으면 안됨
   selectOne으로 핸들링시 dao를 활용하여 데이터를 이관받아야함

- Controller
@GetMapping("/point_one.do")
public String point_one(Model m) {
    int nidx = 12; //강제로 nidx값 넣음..ㅋ
    try {
        pointdao result = pm.one_list(nidx); //인자값으로 던짐
        
        System.out.println(result.uid); 
        //DAO의 변수로 받음 - 해당 nidx에 맞는 id 출력됨(getUid() getter함수 로 받아도됨)
        
        m.addAttribute("result",result);
    }catch(Exception e) {
        System.out.println(e);
        System.out.println("module error");
    }

    return null;
}


- Module (point_module.java)

//사용자 아이디에 대한 한명의 포인트 내역
public pointdao one_list(int z){
    //받는 형식 pointdao 는 dao명칭
    pointdao data = tm.selectOne("datadb.point_one",z);
    System.out.println(data);

    return data;
}

모듈에서 모두 핸들링 해서 배열로 넘기는게 아닌 이상 controller에서 배열로 받을 수 없다!

- View 생략