일반적으로 우리는
Mapper -> Dao/Mapper(Repository) -> Service -> ServiceImpl -> Controller
이런식으로 구조화 시킨다.
하지만
Mapper.xml -> Service -> Controller
로 간단하게 웹 페이지 구축이 가능하더라..
DemoMapper.xml
<?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.example.geo.DemoMapper">
<resultMap id="getSelectList" type="Map">
<id column="DEPT_NO" property="DEPT_NO"/>
<id column="DNAME" property="DNAME"/>
<id column="LOC" property="LOC"/>
</resultMap>
<select id="getSelectList" resultType="Map">
SELECT
DEPT_NO
,DNAME
,LOC
FROM
TEST
WHERE
1 = 1
</select>
</mapper>
이건 뭐.. 너무 간단한 내용이라 그냥
올리고 넘어가겠다.. 그냥 쿼리 짜준거로 보면 된다.
DemoService.java
package com.example.geo;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service ("DemoService")
public class DemoService {
@Inject
private SqlSession sqlSession;
private static String namespace="com.example.geo.DemoMapper";
public List<Map<String, Object>> getSelectList(Map<String, Object> param) throws Exception {
List<Map<String, Object>> result = sqlSession.selectList(namespace + ".getSelectList", param);
System.out.println( "result : " + result.toString());
System.out.println( "param : " + param.toString());
return result;
}
}
namespace 부분은 내가 그냥 직접 다 타이핑하기 귀찮아서 해준거고
private static string namespace ="[이부분을]";
직접 namespace 대신 해서 넣어줘도 상관 없다.
List<Map<String, Object>> 가 잘 이해 안가면 (구글링을 추천한다)
DemoController.java
package com.example.geo;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.annotation.Resources;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import lombok.ToString;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@RestController
public class DemoController {
@Resource (name = "DemoService" )
private DemoService demoService;
@RequestMapping (value="/index")
public Map<String, Object> getSelectList(@RequestParam Map<String, Object> param) throws Exception {
System.out.println("##### index.jsp를 시작합니다 #####");
Map<String, Object> result = new HashMap<String, Object>(); // result 객체를 선언하고 여기에 데이터를 담겠다는 의미
try {
List<Map<String, Object>> list = demoService.getSelectList(param);
result.put("SUCCESS", true);
result.put("LIST", list);
System.out.println(" list : " + list.toString());
} catch (Exception e) {
System.out.println("두근 두근 에러 발생");
result.put("SUCCESS", false);
result.put("MSG", e.getMessage());
}
// System.out.println(demoService.getSelectList(param));
// System.out.println("데이터 반환 : " + param);
// System.out.println("리절트 반환: " + result.toString());
return param;
}
}
이렇게 간략하게
Mapper / service / controller
만 이용해서 구축이 가능하다.
결과값
To be continue..