AQueryTool
{{source.erd_info.erd_name + '(Ver ' + erdVersion + ', ' + source.erd_info.db_type + ')'}}
aquerytool.com
ORACLE에 있는 TABLE 의 SQL문을 복사한다.
aqeury 홈페이지를 들어간다.
-- Insert
INSERT INTO BBS
(BBS_NO,
BBS_TITLE,
BBS_CONTENT,
BBS_WRITER,
BBS_REG_DATE,
BBS_COUNT)
VALUES
(1,
'N',
'BBS_CONTENT 1',
'N',
sysdate,
1);
-- Insert된 Row의 Auto Increment값 조회
SELECT BBS_SEQ.CURRVAL FROM DUAL;
-- Update
UPDATE BBS
SET
BBS_NO = 1,
BBS_TITLE = 'N',
BBS_CONTENT = 'BBS_CONTENT 1',
BBS_WRITER = 'N',
BBS_REG_DATE = sysdate,
BBS_COUNT = 1
WHERE BBS_NO = 1;
-- Delete
DELETE FROM BBS
WHERE BBS_NO = 1;
-- 1일이 지난 데이터 삭제
DELETE FROM BBS
WHERE BBS_REG_DATE < SYSDATE - 1;
(servive랑 dao파일은 package명 바꿔주면서 바뀌어 있었다! )
ServiceImpl 안에 변수명 같이 바꿔주기 art_shift+r
package com.exam.myapp.bbs;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BbsServiceImpl implements BbsService {
@Autowired
private BbsDao BbsDao;
@Override
public List<BbsVo> selectList() {
return BbsDao.selectList();
}
@Override
public int insert(BbsVo vo) {
return BbsDao.insert(vo);
}
@Override
public BbsVo select(BbsVo vo) {
return BbsDao.select(vo);
}
@Override
public int update(BbsVo vo) {
return BbsDao.update(vo);
}
@Override
public int delete(BbsVo vo) {
return BbsDao.delete(vo);
}
}
controller도 변수명을 바꿔준다.
package com.exam.myapp.bbs;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.validation.Valid;
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.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/bbs/")
public class BbsController {
@Autowired
private BbsService bbsService;
@RequestMapping(path = "list.do", method = RequestMethod.GET)
public String list(Model model) {
List<BbsVo> list = bbsService.selectList();
model.addAttribute("bbsList", list);
return "bbs/list";
}
@RequestMapping(path = "add.do", method = RequestMethod.GET)
public String addform(BbsVo vo) {
return "bbs/add";
}
@RequestMapping(path = "add.do", method = RequestMethod.POST)
public String add(@Valid BbsVo vo, BindingResult bindingResult) {
// if (bindingResult.hasErrors()) { //검증결과 에러가 있다면
// return "bbs/add"; //회원추가 jsp 화면을 다시 출력
// }
int num = bbsService.insert(vo);
return "redirect:/bbs/list.do";
}
@RequestMapping(path = "edit.do", method = RequestMethod.GET)
public String editform(BbsVo vo, Model model) {
BbsVo mvo = bbsService.select(vo);
model.addAttribute("bbsVo", mvo);
return "bbs/edit";
}
@RequestMapping(path = "edit.do", method = RequestMethod.POST)
public String edit(@ModelAttribute("bbsVo") @Valid BbsVo vo, BindingResult bindingResult) {
// if (bindingResult.hasFieldErrors("bbsName") || bindingResult.hasFieldErrors("bbsPoint")) {
// return "bbs/edit";
// }
int num = bbsService.update(vo);
return "redirect:/bbs/list.do";
}
@RequestMapping(path = "del.do", method = RequestMethod.GET)
public String del(BbsVo vo) {
int num = bbsService.delete(vo);
return "redirect:/bbs/list.do";
}
@RequestMapping(path = "check.do", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> checkId(BbsVo vo) {
BbsVo mvo = bbsService.select(vo);
Map<String,Object> map = new HashMap<String, Object>();
map.put("result", mvo==null ); //사용가능한경우 {result:true}, 불가능한경우 {result:false}
return map;
}
}
BbsMapper namespace 명을 bbsdao 경로를 맞춰준다
경로를 맞춰줘서 자동완성이 뜬다
<select id="select" resultType="BbsVo">
SELECT BBS_NO, BBS_TITLE, BBS_CONTENT, BBS_WRITER, BBS_REG_DATE, BBS_COUNT
FROM BBS
WHERE BBS_NO = #{bbsNo}
</select>
<insert id="insert">
INSERT INTO BBS
(BBS_NO,
BBS_TITLE,
BBS_CONTENT,
BBS_WRITER,
BBS_REG_DATE,
BBS_COUNT)
VALUES
(BBS_SEQ.NEXTVAL,
#{bbsTitle},
#{bbsContent},
#{bbsWriter},
sysdate,
0)
</insert>
<update id="update">
UPDATE BBS
SET
BBS_TITLE = #{bbsTitle},
BBS_CONTENT = #{bbsContent}
WHERE BBS_NO = #{bbsNo}
</update>
<delete id="delete">
DELETE FROM BBS
WHERE BBS_NO = #{bbsNo}
</delete>
jsp를 만들러 간다
list.jsp를 만들어준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="row">
<div class="col">
<h1>게시글목록</h1>
<a href="${pageContext.request.contextPath}/bbs/add.do">
<button type="button" class="btn btn-primary" ><i class="bi-plus-circle"></i> 새 글쓰기</button>
</a>
<table class="table table-striped">
<thead>
<tr class="table-dark"><th>제목</th><th>작성자</th><th>등록일</th></tr>
</thead>
<tbody>
<c:forEach var="vo" items="${bbsList}" >
<tr>
<td><a href="${pageContext.request.contextPath}/bbs/edit.do?bbsNo=${vo.bbsNo}"><c:out value="${vo.bbsTitle}" /></a></td>
<td><c:out value="${vo.bbsWriter}" /></td>
<td>${vo.bbsRegDate}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
add.jsp를 추가한다.
<%@ 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="form" uri="http://www.springframework.org/tags/form" %>
<script type="text/javascript">
$(function() { //문서 로드가 완료된 후 실행
var idChecked = false; //아이디중복확인여부
$('#memForm').on('submit', function(e){ //id=memForm 인 폼 엘리먼트 제출(submit)시 실행
if (!idChecked) {
alert('아이디 중복확인이 필요합니다.');
return false;
}
if ( $('#memPass').val() != $('#memPassCheck').val() ) {
alert('비밀번호 입력이 서로 다릅니다.');
return false; //e.preventDefault();
}
});
$('#dupBtn').on('click', function() {
$.ajax({
url: "${pageContext.request.contextPath}/bbs/check.do",
method: "post",
data: { memId: $('#memId').val() },
dataTypes: 'json'
}).done(function(resp) {
console.log( resp );
idChecked = resp.result;
if (resp.result){ //사용가능한 아이디
alert('사용가능한 아이디입니다.');
// $('#saveBtn').prop('disabled', false);
// $('#dupBtn').prop('disabled', true);
}else { //이미 존재하는 아이디
alert('이미 존재하는 아이디입니다.');
// $('#saveBtn').prop('disabled', true);
// $('#dupBtn').prop('disabled', false);
}
}).fail(function(jqXHR,textStatus) {
alert('아이디 중복 확인 요청 실패!');
});
});
$('#memId').on('change', function() {
idChecked = false;
// $('#saveBtn').prop('disabled', true);
// $('#dupBtn').prop('disabled', false);
});
});
</script>
<div class="row">
<div class="col">
<h1>게시글등록</h1>
<form:form modelAttribute="bbsVo" id="memForm" action="${pageContext.request.contextPath}/bbs/add.do" method="post" >
<div class="mb-3">
<form:label path="bbsTitle" class="form-label">제목</form:label>
<form:input path="bbsTitle" class="form-control" cssErrorClass="form-control is-invalid" />
<form:errors path="bbsTitle" cssClass="invalid-feedback"/>
</div>
<div class="mb-3">
<form:label path="bbsContent" class="form-label">내용</form:label>
<form:textarea path="bbsContent" row="5" class="form-control" cssErrorClass="form-control is-invalid" />
<form:errors path="bbsContent" cssClass="invalid-feedback" />
</div>
<button type="submit" id="saveBtn" class="btn btn-primary"><i class="bi-file-arrow-up"></i> 저장</button>
<a href="${pageContext.request.contextPath}/bbs/list.do">
<button type="button" class="btn btn-primary" ><i class="bi-list"></i> 게시글목록</button>
</a>
</form:form>
</div>
</div>
edit.jsp를 작성한다.
<%@ 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="form" uri="http://www.springframework.org/tags/form" %>
<script type="text/javascript">
$(function() { //문서 로드가 완료된 후 실행
$('#delLink').on('click', function(e){ //id=delLink 인 엘리먼트 클릭시 실행
var ok = confirm('진짜 삭제?');
if (ok===false) {
e.preventDefault(); //이벤트에 대한 브라우저 기본동작 취소
// return false; //이벤트리스너함수에서 false를 반환하면
//이벤트에 대한 브라우저 기본동작 취소
}
});
});
</script>
<div class="row">
<div class="col">
<h1>게시글 변경</h1>
<form:form modelAttribute="bbsVo" action="${pageContext.request.contextPath}/bbs/edit.do" method="post" >
<div class="mb-3">
<form:label path="bbsNo" class="form-label">글번호</form:label>
<form:input path="bbsNo" readonly="true" class="form-control" />
</div>
<div class="mb-3">
<form:label path="bbsTitle" class="form-label">제목</form:label>
<form:input path="bbsTitle" class="form-control" cssErrorClass="form-control is-invalid" />
<form:errors path="bbsTitle" cssClass="invalid-feedback"/>
</div>
<div class="mb-3">
<form:label path="bbsContent" class="form-label">내용</form:label>
<form:textarea path="bbsContent" row="5" class="form-control" cssErrorClass="form-control is-invalid" />
<form:errors path="bbsContent" cssClass="invalid-feedback" />
</div>
<button type="submit" class="btn btn-primary"><i class="bi-file-arrow-up"></i> 저장</button>
<a href="${pageContext.request.contextPath}/bbs/list.do">
<button type="button" class="btn btn-primary" ><i class="bi-list"></i> 목록</button>
</a>
<a id="delLink" href="${pageContext.request.contextPath}/bbs/del.do?bbsNo=${bbsVo.bbsNo}">
<button type="button" class="btn btn-primary" ><i class="bi-list"></i> 삭제</button>
</a>
</form:form>
</div>
</div>
'Coding > spring' 카테고리의 다른 글
로그인 화면 구성 (0) | 2022.10.07 |
---|---|
부트스트랩 이용해서 에러메세지 띄워보기 (1) | 2022.09.23 |
회원정보 수정 (0) | 2022.09.16 |
Jquery를 활용한 예제 (0) | 2022.08.26 |
인강 복습 : [회원관리] 유효성 처리 검사 (0) | 2022.08.24 |