일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVC
- 코드잇
- servlet
- C
- jsp
- 데이터베이스
- 웹개발
- Programming
- job
- sql
- 자바
- BCIT
- msa개념
- MSA
- 안드로이드
- Bambino
- mysql
- microservices
- 리액트프로젝트
- 웹개발기초
- Java
- two pointers
- SpringFramework
- jvm메모리구조
- 밤비노
- CSS
- coding test
- html
- DB
- 웹개발자
- Today
- Total
초보 개발자의 기록
관리자모드-상품등록 페이지 개발 순서 본문
관리자 모드에서 대부분 코드를 작성하기때문에 클라이언트를 만들 경우 수월함 (이미 만들어진 DAO,Service 이용)
대부분의 경우, 테이블마다 컨트롤러를 1:1로 만듬
업무의 복잡성에 따라 컨트롤러를 만들 것인지 아닌지 정함
상위 카테고리에 자세한 작성을 하려면 따로 배분하는것이 좋지만, select만 하는 경우니까 컨트롤러 하나로
Controller->Service->DAO->Mybatis
로직을 짤경우-개발은 역방향으로!
상위로 올라갈수록 하위에 의존적이므로
<-Mybatis
1. model.domain패키지 : VO생성
TopCategory.java
package com.study.fashionshopapp.model.domain;
public class TopCategory {
private int topcategory_id;
private String name;
private int rank;
public int getTopcategory_id() {
return topcategory_id;
}
public void setTopcategory_id(int topcategory_id) {
this.topcategory_id = topcategory_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
}
2. mybatis.mapper 패키지: Mapper생성
TopCategoryMapper.xml
<?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="TopCategory">
<select id="selectAll" resultType="TopCategory">
SELECT * FROM topcategory ORDER BY rank ASC
</select>
</mapper>
3. mybatis.config 패키지: Mybatis 설정파일 만듬 -config.xml
mybatis.org/mybatis-3/ko/getting-started.html
<?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">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
config.xml
<?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>
<typeAliases>
<typeAlias type="com.study.fashionshopapp.model.domain.TopCategory" alias="TopCategory"/>
</typeAliases>
<mappers>
<mapper resource="com/study/fashionshopapp/mybatis/mapper/TopCategoryMapper.xml"/>
</mappers>
</configuration>
자바 class가 아닌경우는 모두 일반 파일로 간주되기때문에 .이 아닌 /로 표시
DAO<-Mybatis
규모가 큰 경우에는 DAO를 interface로 만들어야함 -DI를 이용하려면
DI(Dependency Injection) 의존성 주입 클래스 사이의 의존관계 (설정 정보)를 컨테이너가 자동적으로 연결
개발구분-Mybatis/Jdbc?
1. DAO 클래스를 인터페이스로 변경
2. CRUD 작업
model.product.repository
TopCategoryDAO.java
package com.study.fashionshopapp.model.product.repository;
import java.util.List;
import com.study.fashionshopapp.model.domain.TopCategory;
public interface TopCategoryDAO {
//CRUD
public List selectAll();
public TopCategory select(int topcategory_id);
public void insert(TopCategory topcategory);
public void update(TopCategory topcategory);
public void delete(int topcategory_id);
}
SubCategoryDAO.java
package com.study.fashionshopapp.model.product.repository;
public interface SubCategoryDAO { }
ProductDAO.java
package com.study.fashionshopapp.model.product.repository;
public interface ProductDAO { }
3. DAO의 구현체 - 하위객체 만들기
model.product.repository
MybatisTopCategoryDAO.java
package com.study.fashionshopapp.model.product.repository;
import java.util.List;
import com.study.fashionshopapp.model.domain.TopCategory;
public class MybatisTopCategoryDAO implements TopCategoryDAO{
@Override
public List selectAll() {
// TODO Auto-generated method stub
return null;
}
@Override
public TopCategory select(int topcategory_id) {
// TODO Auto-generated method stub
return null;
}
@Override
public void insert(TopCategory topcategory) {
// TODO Auto-generated method stub
}
@Override
public void update(TopCategory topcategory) {
// TODO Auto-generated method stub
}
@Override
public void delete(int topcategory_id) {
// TODO Auto-generated method stub
}
}
Service<-DAO<-Mybatis
모든 하위 객체가 반드시 구현해야 할 공통 및 필수적인 기능을 정의
1. Service를 interface로 생성
2. CRUD생성
서비스의 하위객체들은 Mybatis/jdbc 구분하지 않음
DAO의 interface만 조종하면 되기떄문
model.product.service
TopCategoryService.java
package com.study.fashionshopapp.model.product.repository;
import java.util.List;
import com.study.fashionshopapp.model.domain.TopCategory;
//모든 하위 객체가 반드시 구현해야 할 공통 및 필수적인 기능을 정의
public interface TopCategoryService {
public List selectAll();
public TopCategory select(int topcategory_id);
public void insert(TopCategory topcategory);
public void update(TopCategory topcategory);
public void delete(int topcategory_id);
}
3.Service의 하위 객체 ServiceImpl 생성
Service 만들어야하는이유? 서비스의 존재가 없다면 스트림 이용한 파일처리 불가능 (DAO가 처리할 수 없음)
Service도 다양한 종류의 업무 타입이 있어서 교체의 대상이 되어야하므로 interface처리 (변동가능성-유연해짐)
ex>이메일 처리할경우 : ServiceEmail 등..과 같이
TopCategoryServiceImpl.java
package com.study.fashionshopapp.model.product.repository;
import java.util.List;
import com.study.fashionshopapp.model.domain.TopCategory;
public class TopCategoryServiceImpl implements TopCategoryService{
@Override
public List selectAll() {
// TODO Auto-generated method stub
return null;
}
@Override
public TopCategory select(int topcategory_id) {
// TODO Auto-generated method stub
return null;
}
@Override
public void insert(TopCategory topcategory) {
// TODO Auto-generated method stub
}
@Override
public void update(TopCategory topcategory) {
// TODO Auto-generated method stub
}
@Override
public void delete(int topcategory_id) {
// TODO Auto-generated method stub
}
}
Controller<-Service<-DAO<-Mybatis
ProductController.java
package com.study.fashionshopapp.controller.admin;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
//관리자 모드에서의 상품에 대한 요청 처리
@Controller
public class ProductController {
//상위 카테고리 가져오기
//하위 카테고리 가져오기
//상품 목록
@RequestMapping(value="/admin/product/list", method=RequestMethod.GET)
public ModelAndView getProductList() {
ModelAndView mav = new ModelAndView("admin/product/product_list");
return mav;
}
//상품 등록 폼
@RequestMapping(value="/admin/product/registform")
public String registForm() {
return "admin/product/regist_form";
}
//상품 상세
//상품 등록
//상품 수정
//상품 삭제
}
'SpringFramework > FashionShop' 카테고리의 다른 글
관리자모드-상품등록 페이지 만들기 (0) | 2021.01.06 |
---|---|
관리자모드-상품관리 페이지 만들기 (0) | 2021.01.06 |
관리자모드-메인페이지 만들기 (0) | 2021.01.06 |
스타일적용 & include 지시어 사용한 중복코드 jsp분리 (0) | 2021.01.06 |
Oracle 이용한 DataBase 설계 (0) | 2021.01.05 |