mybis 를 사용하면 테이블에 입력된 데이터를 가져올 수 있다. 스프링프레임워크에서 mybis 를 이용하면 테이블 조작을 할 수 있는 쿼리를 xml 형태로 만들어 데이터를 요청할 수 있다.
게시판 만들기 13 자바 스프링프레임워크
게시판 테이블 데이터 가져오기
mybtis에서 쿼리를 xml 형식을 작성하는 것은 어렵지 않다.
mapper 에 대한 자세한 설명은 다음으로 미룬다.
쿼리에 들어가는 임의 값 등의 입력을 위해 <![CDATA[ 쿼리 ]]> 이 부분을 얻는 것을 잊지 말자.
기본적인 작성방법은 아래와 같다.
<?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="">
<select id="" parameterType="" resultType="">
<![CDATA[
사용할 쿼리
]]>
</select>
</mapper>
select mapper 매퍼 작성하기
위의 코드를 토대로 mybtis의 mapper xml에 select 쿼리를 작성해 본다.
전체적인 코드는 아래와 같다.
<?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.crd.test.Template.Template0ModelMapper">
<select id="SelectListTemplate" parameterType="com.crd.test.Template.Template0Model" resultType="com.crd.test.Template.Template0Model">
<![CDATA[
SELECT idx
, title
, content
, ins_dt
, ins_usr
, upd_dt
, upd_usr
FROM tbl_template
;
]]>
</select>
</mapper>
테스트
dao 클래스 객체에서 위의 xml 매퍼를 호출할 것이다.
dao 에서 매퍼를 호출하기 위해 필요한 것은 Sqlsession 이다.
이것은 스프링프레임워크에서 설정해 줘야 한다.
설명이 길어지기 때문에 다음으로 미룬다.
package com.crd.test.Template;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class Template3Dao implements Template3DaoImpl {
@Autowired
private SqlSession sqlSession;
@Override
public Template0Model RequestData(Template0Model model) throws Exception {
String vValue = model.getDataObject().toString();
model.setDataObject(vValue + ", dao 요청 도착 및 결과 반환");
return model;
}
@Override
public List<Template0Model> SelectListTemplate(Template0Model p_model) throws Exception {
// TODO Auto-generated method stub
return sqlSession.selectList("SelectListTemplate", p_model);
}
}
컨트롤러의 내용을 변경해 본다.
전체코드를 넣었지만 중요한 메서드는 BoardList 이다.
데이터베이스에 데이터를 요청하는 메서드를 만들고 데이터를 불러온 후 json문자열로 만들고 있다.
데이터를 기준으로 전체 게시물수를 알 수 있다.
이것을 화면에 표시하도록 한다.
package com.crd.test.Template;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.google.gson.Gson;
/**
* Handles requests for the application home page.
*/
@Controller
public class Template1Controller {
@Autowired
private Template2Service gService;
private static final Logger logger = LoggerFactory.getLogger(Template1Controller.class);
/**
* url 최초진입
*/
@RequestMapping(value = "/template", method = RequestMethod.GET)
public String BoardList(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
int vCount = 0;
String vRetList = null;
List<Template0Model> vList;
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
Template0Model vModel = new Template0Model();
try {
vModel = gService.RequestData(
new Template0Model("")
);
vList = gService.SelectListTemplate(
new Template0Model("")
);
vCount = vList.size();
vRetList = new Gson().toJson(vList);
} catch (Exception e) {
// TODO Auto-generated catch block
vModel.setDataObject("에러발생" + e.getMessage());
}
model.addAttribute("serverTime", formattedDate + " STS 실행 테스트");
model.addAttribute("serverResult", vModel.getDataObject());
model.addAttribute("serverResultListCount", vCount);
model.addAttribute("serverResultListData", vRetList);
return "template/template";
}
}
서비스 객체의 코드 또한 같이 올려본다.
package com.crd.test.Template;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class Template2Service implements Template2ServiceImpl {
@Autowired
private Template3Dao gDao;
@Override
public Template0Model RequestData(Template0Model model) throws Exception {
model.setDataObject("서비스 요청 도착 및 결과 반환");
model = gDao.RequestData(model);
return model;
}
@Override
public List<Template0Model> SelectListTemplate(Template0Model p_model) throws Exception {
// TODO Auto-generated method stub
return gDao.SelectListTemplate(p_model);
}
}
결과화면을 보자.
테이블에 데이터를 하나 넣어씩 때문에 단 하나의 자료가 나오는 것을 볼 수 있다.
반응형
'programming > MakinGProJect' 카테고리의 다른 글
게시판 만들기 15 화면에 목록 표시하기 자바 스프링프레임워크 사용 (0) | 2021.10.29 |
---|---|
게시판 만들기 14 자바 스프링프레임워크 화면에 데이터 표시하기 (0) | 2021.10.27 |
게시판 만들기 12 자바 스프링프레임워크 테이블 조회 쿼리 만들기 (0) | 2021.10.26 |
게시판 만들기 11 자바 스프링프레임워크 게시판 테이블 만들기 (0) | 2021.10.25 |
게시판 만들기 10 자바 스프링프레임워크 서비스와 dao 연결하기 (0) | 2021.10.24 |
댓글