리스트를 구현해보자.


알다시피 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

+ Recent posts