차트 구성을 위한 spring 기본 구조

개발 오답 노트·2025년 8월 7일
post-thumbnail

1. Controller

@Controller
public class ChartController {

    @Resource(name = "chartService")
    private ChartService chartService;

    @RequestMapping("/chart/data.do")
    @ResponseBody
    public NexacroResult getChartData() {
        List<Map<String, Object>> chartList = chartService.selectChartData();

        NexacroResult result = new NexacroResult();
        result.addDataSet("output", chartList);  // Dataset 이름과 일치해야 함

        return result;
    }
}

2. Service & DAO

ChartService.java

public interface ChartService {
    List<Map<String, Object>> selectChartData();
}

ChartServiceImpl.java

@Service("chartService")
public class ChartServiceImpl implements ChartService {

    @Resource(name = "chartDAO")
    private ChartDAO chartDAO;

    @Override
    public List<Map<String, Object>> selectChartData() {
        return chartDAO.selectChartData();
    }
}

ChartDAO.java

public interface ChartDAO {
    List<Map<String, Object>> selectChartData();
}

ChartDAOImpl.java

@Repository("chartDAO")
public class ChartDAOImpl implements ChartDAO {

    @Autowired
    private SqlSession sqlSession;

    private static final String NAMESPACE = "chartMapper.";

    @Override
    public List<Map<String, Object>> selectChartData() {
        return sqlSession.selectList(NAMESPACE + "selectChartData");
    }
}

3. MyBatis Mapper

<select id="selectChartData" resultType="map">
    SELECT
        MONTH_NAME AS category,
        SALES_AMOUNT AS value
    FROM SALES_TABLE
    ORDER BY MONTH_NO
</select>
  • resultType="map" → 자동으로 Map 형태로 반환됨

4. 넥사크로 Dataset과 매칭

category (문자)value (숫자)
1월100
2월120
......

넥사크로에서 이 데이터를 그대로 WebBrowser.callMethod()로 넘기면 차트에서 사용 가능해.

profile
포토폴리오 https://wikidocs.net/book/10969 유튜브 링크 https://www.youtube.com/@%EC%B5%9C%EC%9B%90%EC%9D%BC-n5r

0개의 댓글