리스트를 구현해보자.
알다시피 get method로 현재까지 구현한내용들을 보면 전부 단일 row를 구해서 json으로 리턴시켜준다
이제 데이터베이스의 있는 모든 내용들을 리턴시켜주어보자
일단 모델객체를 만들어주자
package com.pratice.project.model; import java.util.List; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({"stat","cause","userList"}) public class UserList { @JsonProperty("stat") @JsonInclude(Include.NON_NULL) private String stat;
@JsonProperty("cause") @JsonInclude(Include.NON_NULL) private String cause;
@JsonProperty("userList") @JsonInclude(Include.ALWAYS) private List<User> userList;
public String getStat() { return stat; } public void setStat(String stat) { this.stat = stat; } public String getCause() { return cause; } public void setCause(String cause) { this.cause = cause; } public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } } |
잘보면 리스트는 유저들의 목록을 받아오는 필드고 나머지는 지난챕터에서 배운 에러처리를 위한 항목인걸 알 수 있다.
다음으로 dao인터페이스를 만들어주자
package com.pratice.project.dao; import java.util.List; import com.pratice.project.model.Name; import com.pratice.project.model.User; public interface IGetDao { public Name selectName(String name); public User selectUser(String userID); public void addUser(User user); public List<User> getUserList(); } |
user로 나오는 리스트들을 받는 다는 의미의 getUserList 인터페이스를 선언해주었다. 이제
쿼리문을 짜주자
<?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.pratice.project.dao.IGetDao"> <select id="selectName" parameterType="String" resultType="name"> <![CDATA[ SELECT UserName FROM usertbl WHERE UserName = #{name} ]]> </select> <select id="selectUser" parameterType="String" resultType="user"> <![CDATA[ SELECT * FROM usertbl WHERE UserID = #{userID} ]]> </select> <insert id="addUser" parameterType="user"> <![CDATA[ insert into userTbl(UserID,UserName,UserAge,Phone,Comment) values (#{userID},#{userName},#{userAge},#{phone},#{comment}); ]]> </insert>
<select id="getUserList" resultType="user"> <![CDATA[ SELECT * FROM usertbl ]]> </select> </mapper> |
쿼리를 보면 user클래스로 리턴해주는것을 알수 있는데 여기서좀 의문이 들텐데. 어떻게 저 쿼리가 리스트로 보내지는 의문이 들것이다. 이것은 마이바티스가 row수가 1이상을 넘어가면 그 객체를 리스트로 자동으로 리턴시켜주는것이다.
이제 다음으로 서비스 인터페이스에 우리가 사용할 함수를 선언해주자.
package com.pratice.project.service; import com.pratice.project.model.Name; import com.pratice.project.model.STAT; import com.pratice.project.model.User; import com.pratice.project.model.UserList; public interface TestService { public Name getName(String name); public User getUser(String id); public STAT addUser(User user); public UserList getUserList(); } |
그리고 구현부를 만들어주자
package com.pratice.project.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.pratice.project.dao.IGetDao; import com.pratice.project.model.Name; import com.pratice.project.model.STAT; import com.pratice.project.model.User; import com.pratice.project.model.UserList; import com.pratice.project.service.TestService; @Service public class TestServiceImpl implements TestService { @Autowired private IGetDao mapper; @Override public Name getName(String name) { // TODO Auto-generated method stub Name Testreturn = mapper.selectName(name); return Testreturn; } @Override public User getUser(String id) { // TODO Auto-generated method stub User user = mapper.selectUser(id); return user; } @Override public STAT addUser(User user) { // TODO Auto-generated method stub STAT stat = new STAT(); try { mapper.addUser(user); stat.setStat("success"); return stat; } catch (Exception e) { stat.setStat("fail"); stat.setCause(e.getMessage()); return stat; } } @Override public UserList getUserList() { // TODO Auto-generated method stub UserList userlist = new UserList(); try { userlist.setStat("success"); List<User> list=mapper.getUserList(); userlist.setUserList(list); return userlist; } catch (Exception e) { userlist.setStat("fail"); userlist.setCause(e.getMessage()); return userlist; } } } |
다른 구현부랑 차이가있다. 일단 지난 챕터에서 사용하던 try캐치문이 들어갔다. 그리고 mapper를 객체로 바로 주입하는게 아니라 일단 리스트형태로 가지고 온 후, 그 list를 set해서 선언한 모델객체인 userlist 주입한다. 나머지는 동일하다.
이제 api를 등록하기위해 컨트롤러를 만들어주자
package com.pratice.project.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.pratice.project.model.Name; import com.pratice.project.model.STAT; import com.pratice.project.model.User; import com.pratice.project.model.UserList; import com.pratice.project.service.TestService; @RestController public class TestController { @Autowired TestService testservice; @RequestMapping(value = "/test/rest", method = RequestMethod.GET) public Name getName(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "name") String name) { Name rt = testservice.getName(name); return rt; } @RequestMapping(value = "/user", method = RequestMethod.GET) public User getUser(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "userID") String userID) { User rt = testservice.getUser(userID); return rt; } @RequestMapping(value = "/adduser", method = RequestMethod.POST) public STAT addUser(HttpServletRequest request, HttpServletResponse response, @RequestBody User user) { STAT stat = testservice.addUser(user); return stat; }
@RequestMapping(value = "/userlist", method = RequestMethod.GET) public UserList getUserList(HttpServletRequest request, HttpServletResponse response) { UserList userlist = testservice.getUserList(); return userlist; }
} |
Res tclient를 url에 맞추어 설정해주자 물론 메서드는 GET이다.
정상적으로 뜨는가? 그렇다면 리스트를 리턴시켜준것이다.
'DEV > SPRING' 카테고리의 다른 글
Rest Service 구현[9] (0) | 2018.05.11 |
---|---|
Rest Service 구현[8] (0) | 2018.05.11 |
Rest Service 구현[6] (0) | 2018.05.11 |
Rest Service 구현[5] (0) | 2018.05.11 |
Rest Service 구현[4] (0) | 2018.05.11 |