Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

기록

구글차트 사용법 본문

JAVA

구글차트 사용법

9400 2023. 2. 10. 16:57

구글차트 주소 : 

https://developers.google.com/chart?hl=ko

 

 

SQL문 

--집계함수 5형제
--SUM : 합계
--AVG : 평균 
--MAX : 최대값
--MIN : 최소값 
--COUNT : 개수
-- 집계복음 3장 16절 라클
-- 집계함수 이외의 ㅣ컬럼들은 GROUP BY절에 기술해야 하느니라.라클
-- 상품별 판매금액의 합계가 천만원이 넘는 데이터를 SELECT

SELECT P.PROD_NAME,
        SUM(P.PROD_SALE * C.CART_QTY) MONEY
FROM PROD P,CART  C
WHERE P.PROD_ID = C.CART_PROD
GROUP BY P.PROD_NAME
HAVING SUM(P.PROD_SALE * C.CART_QTY) >= 10000000;

 

DAO

	public List<Map<String,Object>> cartMoney(){
		return this.sqlSessionTemplate.selectList("lprod.cartMoney");
	}

 

 

SERVICE IMPLE

	//상품별 판매금액의 합계가 천만원이 넘은 데이터
	@Override
	public JSONObject cartMoney(){
		List<Map<String,Object>> list = this.lprodDao.cartMoney();
	      
	      System.out.println("list : " + list.get(0).toString());
	      
	      //sampleData.json 파일 참고
	      //0. 리턴할 json객체--------------------------
	      JSONObject data = new JSONObject();   //{}
	      
	      //1.cols 배열에 넣기 
	      //JSON 컬럼 객체---------------------------------------------
	      JSONObject col1 = new JSONObject();
	      JSONObject col2 = new JSONObject();
	      //JSON 배열 객체
	      JSONArray title = new JSONArray();
	      col1.put("label", "상품명");
	      col1.put("type", "string");
	      col2.put("label", "금액");
	      col2.put("type", "number");
	      //타이틀행에 컬럼 추가
	      title.add(col1);
	      title.add(col2);
	      
	      //json객체에 타이틀행 추가
	      data.put("cols", title);
	      //{"cols":[{"label":"상품명","type":"string"},{"label":"금액","type":"number"}]}
	      
	      //2.rows 배열에 넣기
	      JSONArray body = new JSONArray();   //rows
	      for(Map<String,Object> map : list) {
	         JSONObject prodName = new JSONObject();
	         prodName.put("v", map.get("PRODNAME"));   //상품명
	         
	         JSONObject money = new JSONObject();
	         money.put("v", map.get("MONEY"));   //금액
	         
	         JSONArray row = new JSONArray();
	         row.add(prodName);
	         row.add(money);
	         
	         JSONObject cell = new JSONObject();
	         cell.put("c", row);
	         body.add(cell);   //레코드 1개 추가
	      }
	      
	      data.put("rows", body);
	      
	      return data;
	}

 

컨트롤러 

	//요청uri: /chart/chart01
	@GetMapping("/chart01") 
	public String chart01() {
		//forwarding
		return "chart/chart01";
	}
	//요청uri : /chart/chart02
	//응답데이터타입 : json
	@ResponseBody
	@GetMapping("/cartMoney")
	public JSONObject cartMoney() {
		return this.lprodService.cartMoney();
	}

 

chart01.jsp

<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" />
<script type="text/javascript" src="/resources/js/jquery-3.6.0.js"></script> 
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
//구글 차트 라이브러리를 로딩
google.load("visualization","1",{"packages":["corechart"]});

//불러오는 작업이 완료되어 로딩이 되었다면 drawChart() 함수를 호출하는 콜백이 일어남
google.setOnLoadCallback(drawChart);

//콜백함수
function drawChart(){
   //아작났어유
   //dataType : 응답데이터의 형식
   //contentType : 보내는데이터의 형식
   //sync : 동기 / async : 비동기
	//      url:"/chart/chart02",
	
   let jsonData = $.ajax({
      url:"/chart/cartMoney",
      dataType:"json",
      async:false
   }).responseText;
   
   console.log("jsonData : " + jsonData);
   //구글 차트용 데이터 테이블 생성
   let data = new google.visualization.DataTable(jsonData);
   
//    var data = google.visualization.arrayToDataTable([
//        ['Year', 'Visitations', { role: 'style' } ],
//        ['2010', 10, 'color: gray'],
//        ['2020', 14, 'color: #76A7FA'],
//        ['2030', 16, 'opacity: 0.2'],
//        ['2040', 22, 'stroke-color: #703593; stroke-width: 4; fill-color: #C5A5CF'],
//        ['2050', 28, 'stroke-color: #871B47; stroke-opacity: 0.6; stroke-width: 8; fill-color: #BC5679; fill-opacity: 0.2']
//      ]);
   
   //어떤 차트 모양으로 출력할지를 정해주자 => LineChart
   //LineChart , ColumnChart, PieChart
   let chart = new google.visualization.LineChart(
      document.getElementById("chart_div")      
   );
   
   //data 데이터를 chart 모양으로 출력해보자
   chart.draw(data,
      {
         title:"차트 예제",
         width:500,
         height:400
      }      
   );
}
</script>
<div class="row">
	<div class="col-xl-8 col-lg-7">
		<div class="card shadow mb-4">
		<div class="card-header py-3">
			<div class="m-0 font-weight-bold text-primary">상품가격</div>
		</div>	
		<!-- 구글차트가 보여질 영역 -->
		<div id="chart_div"></div>
		</div>
	</div>
</div>

 

 

 

'JAVA' 카테고리의 다른 글

에러페이지 예외처리하기  (0) 2023.02.10
트랜잭션 관리  (1) 2023.02.10
JAVA Spring MAPPER 인터페이스 설정  (0) 2023.02.06
다음 카카오 주소검색 추가  (0) 2023.02.03
JAVA sping BOOK 테이블 list 띄우기  (0) 2023.01.31
Comments