[project] 미니프로젝트 03/07 JFrame에 화면 만들기(1) 다른 건 안 뜨고 view 만 돌아가는 오류 대잔치

kafa·2023년 3월 7일
0

프로젝트

목록 보기
6/6

프레임 만들기 그 1탄

순조롭지 않음

해당페이지를 만들려고 한다.
해당페이지에서 지역과 시간 두개로 정했던 콤보박스는 지역, 날짜, 시간 3개를 받아오는 것으로 수정되었다.


[sql] 설계

mapper에 insert, select, update, delete 다 넣었지만, 기능은 항상 부족하다.

해당 페이지에서 사용자가 지역을 설정하고 본인이 확인하고자 하는 날짜와 시간을 선택하려면

  1. 먼저 지역을 정하고
SELECT no FROM WEATHER1 WHERE no = 30;
  1. 정해진 지역에서 날짜를 정하고
SELECT TO_CHAR(regdate, 'YYYY-MM-DD') 날짜 FROM WEATHER1 WHERE no = 30;
  1. 정해진 날짜에서 시간을 정해야 한다.
SELECT TO_CHAR(regdate, 'HH24') 날짜 FROM WEATHER1 WHERE no = 30;

sql문은 일단 이렇게 적어뒀다.

그리고 이 세가지를 가지고 뷰를 만들었는데

CREATE OR REPLACE VIEW WEATHER1_LOCATION1_VIEW AS
SELECT 
L.name, 
W.no, TO_CHAR(regdate, 'YYYY-MM-DD') w_date, TO_CHAR(regdate, 'HH24') w_hour
FROM LOCATION1 L, WEATHER1 W
WHERE L.no = W.no;

나중에 쓸 일이 있을까 해서 만들었다.

VIEW를 만들때 SELECT에 TO_CHAR를 추가할때 W.TO_CHAR라고 써서 오류가 떴다.

[java] 시도

SELECT TO_CHAR(regdate, 'HH24') 날짜 FROM WEATHER1 WHERE no = 30;

만드는데 순서는 상관없으니까 먼저 시간을 select하는 기능을 만들었다.

mapper

@Select({ " SELECT TO_CHAR(regdate, 'HH24') FROM WEATHER1 WHERE no = #{no} " })
	public List<Weather> weatherSelectDATE(Weather w);

Junit test

@Test
	void weatherSelectDATE() {
		Weather w = new Weather();
		List<Weather> list = mapper.weatherSelectDATE(w);
		for (Weather obj : list) {
			w.setNo(30);
			System.out.println(obj.toString());
		}
	}

깃헙에서 받아서 개인브랜치에 넣은 뒤 자꾸 같은 오류가 났는데 "테이블 혹은 뷰가 없다" 였다. 기존에 사용하던 개인 DB를 연결해 둔 MyBatis가 문제였다. DB경로를 바꿔주니 해결되었다.

그리고 지금은

이렇게만 뜬다.
어째서

대체 왜

null값이라는 건 값을 못 가져왔다는 거 아닌가.
왜 못가져왔지?

mapper

	// 시간가져오기
	@Select({ " SELECT TO_CHAR(regdate, 'HH24') FROM WEATHER1 WHERE no = #{no} " })
	public List<Weather> weatherSelectHOUR(int no);
	// 
    //날짜가져오기
	@Select({ " SELECT TO_CHAR(regdate, 'YYYY-MM-DD') A FROM WEATHER1 WHERE no = #{no} " })
	public List<Weather> weatherSelectDATE(int no);
	// 
    //뷰가져오기?
	@Select({ " SELECT wv.* FROM WEATHER1_LOCATION1_VIEW wv " })
	public List<Map<String, Object>> weatherSelectWV();	

뭐라도 되라는 심정으로 셋 다 만들어 봤다.

Junit test

@Test
	void weatherSelectWV() {
		List<Map<String, Object>> list = mapper.weatherSelectWV();
		for(Map<String, Object> map : list) {
			System.out.println(map);
			}
	}

뷰는 돌아간다!

어째서?

아무래도 TO_CHAR() 부분이 문제가 아닐까 싶다.
수업시간에 이런 함수를 mybatis에서 어떻게 취급했는지 기억이 안난다.
.
.
..
어?

// 성별에 따른 구매수량 조회 (map)
	@Select({ 
		" SELECT usergender, COUNT(*), SUM(total)", 
		" FROM purchaseview1 ", 
		" GROUP BY usergender " })
	public List<Map<String, Object>> selectPurchaseGroupByGender();

설마 GROUP BY를 써야했나?

SELECT TO_CHAR(regdate, 'HH24') FROM WEATHER1 GROUP BY no;

아닌것 같다.

...
근데.. 도중에 이런게 떴다.

IO 오류: The Network Adapter could not establish the connection

내가 mapper에 @mapper를 임포트하지 않아서 나는 오류였다.
:) 짱인데

근데 이걸 고친다고 내 weatherSelectHOUR와 weatherSelectDATE가 돌아가는 건 아니었다.
둘다 짜고치듯 null만 뜬다. 24행이 null만 뜬다.

view는 잘 뜨는데... 이것만 가지고 어떻게 해 볼수는 없나.
JFrame이 안익숙해서 이걸 가지고 뭘 할 수 있을지 잘 가늠이 안간다.

{NO=37, W_DATE=2023-03-06, W_HOUR=17, NAME=세종특별자치시}
{NO=37, W_DATE=2023-03-06, W_HOUR=18, NAME=세종특별자치시}
{NO=37, W_DATE=2023-03-06, W_HOUR=19, NAME=세종특별자치시}
{NO=37, W_DATE=2023-03-06, W_HOUR=20, NAME=세종특별자치시}
{NO=37, W_DATE=2023-03-06, W_HOUR=21, NAME=세종특별자치시}

그래도 지역, 시간, 날짜 다 뜨는데 이거 칼럼 어찌저찌해서 쓸 수 없으려나.

내일 해봐야겠다.

아무리봐도 TO_CHAR가 문제인것 같은데...

profile
kafa is kafa. not be something other.

0개의 댓글