Spring으로 게시판 구현
2016. 12. 16. 17:26ㆍProgramming/Spring
MyBatis 구성 요소
1) Mapper(SQL문 관리)
2) DAO(SqlSession으로 Mapper 호출)
3) 컨트롤러(DAO 실행 및 param/page 넘김)
1) Mapper(SQL문 관리)
<memberMapper.xml>
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <?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="com.spring.mappers.MemberMappers"> <select id="selectAllMember" resultType="com.spring.vo.Member"> <!-- CDATA: 내용이 태그가 아니라 문자열임을 parser에 알림 --> <![CDATA[ SELECT * FROM ( SELECT * FROM ( SELECT ROWNUM row_num, MEM.* FROM ( SELECT * FROM MEMBER ORDER BY NUM DESC )MEM )PAGING_MEMBER WHERE row_num>=#{startNum} ) WHERE row_num<=#{endNum} ]]> </select> <select id="selectMaxNum" resultType="int"> SELECT MAX(num) AS MAXNUM FROM MEMBER </select> <select id="detailMember" resultType="com.spring.vo.Member"> SELECT * FROM member where num = #{num} </select> <select id="selectId" resultType="com.spring.vo.Member"> SELECT * FROM MEMBER WHERE id = #{id} </select> <select id="getAllCount" resultType="int"> SELECT COUNT(*) as count FROM member </select> <select id="login" resultType="com.spring.vo.LoginVo"> SELECT * FROM member where id=#{id} and pwd=#{pwd} </select> <delete id="deleteMember"> DELETE FROM member where num= #{num} </delete> <insert id="insertMember"> INSERT INTO MEMBER(num,id,pwd,name,email,phone,admin,indate) VALUES(#{num},#{id},#{pwd},#{name},#{email},#{phone},#{admin},sysdate) </insert> <update id="updateMember"> UPDATE MEMBER SET pwd=#{pwd},name=#{name},email=#{email}, phone=#{phone},admin=#{admin} WHERE NUM=#{num} </update> </mapper> | cs |
2) DAO(SqlSession으로 Mapper 호출)
<MemberDao.java>
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | package com.spring.dao; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import org.apache.ibatis.session.SqlSession; import org.springframework.stereotype.Repository; import com.spring.vo.LoginVo; import com.spring.vo.Member; import com.spring.vo.Paging; @Repository public class MemberDao { private final static String MemberMapper = "com.spring.mappers.MemberMappers"; @Inject SqlSession sqlSession; public List<Member> selectAllMember(Paging paging){ List<Member> list = sqlSession.selectList(MemberMapper+".selectAllMember",paging); return list; } public int deleteMember(int num){ int delete = 0; delete = sqlSession.delete(MemberMapper+".deleteMember",num); return delete; } public Member detailMember(int num){ Member mem = sqlSession.selectOne(MemberMapper+".detailMember",num); return mem; } public int updateMember(Member mem){ int update = 0; update = sqlSession.update(MemberMapper+".updateMember",mem); return update; } public int selectMaxNum() { int maxNum = 0; maxNum = sqlSession.selectOne(MemberMapper+".selectMaxNum"); return maxNum; } public boolean selectId(String id) { boolean idFlag = false; if(sqlSession.selectOne(MemberMapper+".selectId",id)!=null){ idFlag = true; } return idFlag; } public int insertMember(Member mem) { int insert = 0; insert = sqlSession.insert(MemberMapper+".insertMember",mem); return insert; } public int getAllCount() { int count = 0; count = sqlSession.selectOne(MemberMapper+".getAllCount"); return count; } public LoginVo login(Member mem) { LoginVo login = new LoginVo(); if(sqlSession.selectOne(MemberMapper+".login", mem)!=null){ login = sqlSession.selectOne(MemberMapper+".login", mem); login.setLogin(1); }else{ login.setLogin(0); } return login; } } | cs |
3) 컨트롤러(DAO 실행 및 param/page 넘김)
<MemberController.java>
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | @Controller @RequestMapping("/member/*") public class MemberController { private static final Logger logger = LoggerFactory.getLogger(HomeController.class); @Inject MemberDao dao; SqlSession sqlSession; @RequestMapping("/list.do") public String list(Model model, Paging page){ logger.info("==================list.do start=============="); int count = dao.getAllCount(); page.setTotalCount(count); List<Member> list = dao.selectAllMember(page); model.addAttribute("memList",list); model.addAttribute("paging", page); logger.info("==================list.do end=============="); return "member/MemberList"; } @RequestMapping("/delete.do") public String delete(int num){ //Spring에서 request 객체는 매개변수가 대신 int delete= 0; delete = dao.deleteMember(num); return "redirect:list.do?delete="+delete; } @RequestMapping(value="/updateForm.do", method=RequestMethod.GET) public String updateForm(int num, Model model){ Member mem = dao.detailMember(num); model.addAttribute("mem",mem); return "member/MemberUpdateForm"; } @RequestMapping(value="/update.do", method=RequestMethod.POST) public String update(Member mem, Model model){ int update = 0; update = dao.updateMember(mem); String url = (update>0)?"list.do":"update.do"; model.addAttribute("update",update); return "redirect:"+url; } @RequestMapping(value="/addForm.do", method=RequestMethod.GET) public String addForm(Model model){ //post 방식 호출 페이지는 새로고침 공격 막기 위해 꼭 redirect로 URL 변경해야 int maxNum = 0; maxNum = dao.selectMaxNum(); model.addAttribute("maxNum", maxNum); return "member/MemberAddForm"; } @RequestMapping(value="/insert.do", method=RequestMethod.POST) public String insert(Member mem, Model model){ logger.info("==================insert.do post start=============="); logger.info(mem.toString()); int insert = 0; int maxNum = 1; boolean checkId = true; checkId = dao.selectId(mem.getId()); if(!checkId){ maxNum = dao.selectMaxNum(); mem.setNum(maxNum+1); logger.info(mem.toString()); insert = dao.insertMember(mem); } model.addAttribute("insert",insert); model.addAttribute("checkId",checkId); String url = (insert>0)?"list.do":"addForm.do"; logger.info("==================insert.do post end=============="); return "redirect:"+url; } } | cs |
'Programming > Spring' 카테고리의 다른 글
AJAX로 댓글 기능 구현 (0) | 2016.12.23 |
---|---|
스프링에서 AJAX 사용하기(+JSON) (0) | 2016.12.22 |
Interceptor, Cookie(+JSON) (0) | 2016.12.20 |
Spring JUnit(단위 테스트), MyBatis (0) | 2016.12.15 |
Spring 기본 (0) | 2016.12.13 |