Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바
- poi
- pagenation
- 퍼블리싱
- SQL
- html5
- 자바파일업로드
- Java
- MariaDB
- PAGING
- 페이징
- db
- 스프링
- jsp
- JSTL
- crud
- jquery
- insert
- CSS3
- spring
- ORDERBY
- 파일업로드
- 자바타입
- mysql
- poi엑셀
- mybatis
- select
- 스프링파일업로드
- 자바스크립트
- 게시판구현
Archives
- Today
- Total
째의 개발 기록방
Java/Spring 게시판(CRUD) 연습 본문
***이 글은 이제 막 개발을 시작한 자린이가 기억하기 위한일종의 기록으로 정확하지않을 수 있음을 알립니다.***
구현할 서비스 정보
- 주문리스트 게시판을 구현한다.
1. 가장 먼저 파일들을 만든다.
- vo
- DB
- mapper.xml
- controller
- service/serviceimpl
- jsp
- dao
2. 그 다음 작성 순서는 이러하다.
- DB
- vo객체 생성 ( @Alias, @Data[getter,setter] )
- jsp 파일 작성
- Controller (호출 url 정의를 위해 우선 작성 필요)
- 마이바티스 쿼리 정의파일 (SQL xml 쿼리)
- Mapper / DAO (서비스 객체에서 사용하려면 우선 작성 필요)
- Service (컨트롤러 객체에서 사용하려면 우선 작성 필요)
- Serviceimpl 작성
DB
여기서 M_NUM이 키가 된다.그리고 자동증가 값으로 설정해두었다.
vo 작성
import org.apache.ibatis.type.Alias;
@Alias("OrderInformationVO")
public class OrderInformationVO {
int orderNum;
String orderTradeName;
String orderer;
String orderDate;
String orderAmount;
String selectTxt;
String selectType;
public int getOrderNum() {
return orderNum;
}
public String getOrderTradeName() {
return orderTradeName;
}
public void setOrderTradeName(String orderTradeName) {
this.orderTradeName = orderTradeName;
}
public void setOrderNum(int orderNum) {
this.orderNum = orderNum;
}
public String getOrderer() {
return orderer;
}
public void setOrderer(String orderer) {
this.orderer = orderer;
}
public String getOrderDate() {
return orderDate;
}
public void setOrderDate(String orderDate) {
this.orderDate = orderDate;
}
public String getOrderAmount() {
return orderAmount;
}
public void setOrderAmount(String orderAmount) {
this.orderAmount = orderAmount;
}
public String getSelectTxt() {
return selectTxt;
}
public void setSelectTxt(String selectTxt) {
this.selectTxt = selectTxt;
}
public String getSelectType() {
return selectType;
}
public void setSelectType(String selectType) {
this.selectType = selectType;
}
}
여기서 GEETER, SETTER는 @Data라는 애노테이션으로 대체 할 수 있다.
jsp 작성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="/js/front/jquery-3.4.1.min.js"></script>
<script>
<%--js goSearch 함수 --%>
function goSearch(){
$("#searchForm").attr("action","/order/orderList.do");
$("#searchForm").attr("method","POST");
$("#searchForm").submit();
}
<%--js delete 함수 --%>
function orderDelete(orderNum){
if (confirm(orderNum+"번을 삭세하시겠습니까?")){
location.href = "/order/orderModifyDelete.do?orderNum="+orderNum;
}
}
</script>
</head>
<body>
<div id="wrap">
<h1>주문리스트 조회</h1>
<form id="searchForm" action="/order/orderList.do" method="POST">
<select name="selectType">
<option value="">--전체보기--</option>
<option value="tradeName" <c:if test="${OrderInformationVO.selectType eq 'tradeName' }">selected</c:if>>상품명</option>
<option value="orderer" <c:if test="${OrderInformationVO.selectType eq 'orderer'}">selected</c:if>>주문자</option>
</select>
<input type="text" name="selectTxt" value="${OrderInformationVO.selectTxt}">
<a href="javascript:goSearch();">검색</a>
</form>
<div><a id="listSubmit" href="/order/orderWriteForm.do">등록</a></div>
<table>
<thead>
<tr>
<th>주문번호</th>
<th>상품명</th>
<th>주문자</th>
<th>주문일시</th>
<th>주문금액</th>
<th> </th>
</tr>
</thead>
<tbody id="orderInformation">
<c:forEach var="oi" items="${oiList}" varStatus="status">
<tr>
<td><c:out value="${oi.orderNum }"></c:out></td>
<td><a href="/order/orderDetailForm.do?orderNum=${oi.orderNum}"><c:out value="${oi.orderTradeName }"></c:out></a></td>
<td><c:out value="${oi.orderer }"></c:out></td>
<td><c:out value="${oi.orderDate }"></c:out></td>
<td><c:out value="${oi.orderAmount }"></c:out></td>
<td><a href="javascript:orderDelete(${oi.orderNum });">삭제</a></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</body>
</html>
게시판의 메인화면이자 모든 데이터리스트를 볼 수 있는 화면 jsp파일이다.
<tbody id="orderInformation">
<c:forEach var="oi" items="${oiList}" varStatus="status">
<tr>
<td><c:out value="${oi.orderNum }"></c:out></td>
<td><a href="/order/orderDetailForm.do?orderNum=${oi.orderNum}"><c:out value="${oi.orderTradeName }"></c:out></a></td>
<td><c:out value="${oi.orderer }"></c:out></td>
<td><c:out value="${oi.orderDate }"></c:out></td>
<td><c:out value="${oi.orderAmount }"></c:out></td>
<td><a href="javascript:orderDelete(${oi.orderNum });">삭제</a></td>
</tr>
</c:forEach>
</tbody>
여기서 이 부분이 jstl의 get방식으로 데이터 값을 가져오는 방법이다.
Mapper.xml 작성
<mapper namespace="kr.co..****..dao.OrderMapper">
<!-- 목록을 위한 xml -->
<select id="selectOrderList" parameterType="kr.co..****..vo.OrderInformationVO" resultType="kr.co..****..vo.OrderInformationVO" >
SELECT
ORDER_NUM AS orderNum
,ORDER_TRADENAME AS orderTradeName
,ORDERER AS orderer
,ORDER_DATE AS orderDate
,ORDER_AMOUNT AS orderAmount
FROM ORDER_INFO
WHERE 1=1
<!-- 검색조건 -->
<if test='selectTxt != null and selectTxt != "" ' >
<if test='selectType != null and selectType != "" ' >
<choose>
<when test='selectType == "tradeName" '>
AND ORDER_TRADENAME = #{selectTxt}
</when>
<when test='selectType == "orderer" '>
AND ORDERER = #{selectTxt}
</when>
<otherwise>
</otherwise>
</choose>
</if>
</if>
</select>
</mapper>
리스트 조회와 검색
여기의 id값이 dao 에서의 메서드명이 된다.
mapper 작성
@Mapper("orderMapper")
public interface OrderMapper {
//리스트 목록조회
List<OrderInformationVO> selectOrderList(OrderInformationVO mapperVO);
}
메서드명 = xml에서 id값
service작성
public interface OrderService {
/**
* 주문 리스트 조회
* @param mapperVO
* @return
* @throws Exception
*/
public List<OrderInformationVO> selectOrderList(OrderInformationVO mapperVO) throws Exception;
}
serviceimpl 작성
@Service("orderService")//난 서비스다.
public class OrderServiceImpl implements OrderService{
@Resource(name="orderMapper")//mapper를 참조할것이다.
OrderMapper orderMapper;
/**
* 주문리스트 조회
*/
@Override
public List<OrderInformationVO> selectOrderList (OrderInformationVO serviceVO) throws Exception{
List<OrderInformationVO> returnServiceList = orderMapper.selectOrderList(serviceVO);
return returnServiceList;
}
}
contoller 작성
@Controller//난 컨트롤러다.
@RequestMapping(value="/order")
public class OrderController {
@Resource(name="orderService")
private OrderService orderService;
/**
* 주문리스트 조회
* @param contOrderVO
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value = "/orderList.do")
public ModelAndView orderList (@ModelAttribute OrderInformationVO contOrderVO, HttpServletRequest request) throws Exception{
ModelAndView mv = new ModelAndView();
//list조회를 위해 list를 담아서 보여줄 박스생성
List<OrderInformationVO> orderVoList = null;
orderVoList = orderService.selectOrderList(contOrderVO);
mv.setViewName("/front/order/orderInformationList");
mv.addObject("oiList", orderVoList);
mv.addObject("OrderInformationVO", contOrderVO);
return mv;
}
}
@RequestMapping애노테이션은 url을 설정과함께 밑에 함수와 한 세트로 매핑한다는것이다.
throws Exception = 오류 발생시 예외로 빼서 처리하겠다는 뜻이다.
노란색 밑줄 친 부분은 service에서 정의한 함수와의 연결고리이다.
초록색 밑줄 친 부분은 setviewname으로 jsp파일을 정의하는것이다.
'Back End > Java, Spring' 카테고리의 다른 글
[Java/Spring] 조건으로 검색 기능 구현하기 (0) | 2021.11.05 |
---|---|
[Java/Spring] 페이징 구현하기 (0) | 2021.10.28 |
개발기억노트 / java spring 게시판 구현 연습 / jsp 세부적으로 이해하기 (0) | 2021.06.07 |
java 기초 (0) | 2021.05.03 |
java 언어 배우기 (0) | 2021.05.03 |