cmd
npm install classnames
npm install react-icons --save

마이페이지에서 내가쓴글, 내가한 질문, 나의 댓글, 내가찜한카페 갯수 보여주기를 구현하고자 아래처럼 컨트롤러 -> 서비스 -> 레파지토리 그리고 JSP를 구현했는데..




마이페이지 접속을 하면 해당 에러가 뜸..
"Optional int parameter 'memberId' is present but cannot be translated into a null value due to being declared as a primitive type."

콘솔에 회원번호로 SELECT COUNT(*)쿼리가 뜨고 회원번호도 나오는데.. 원인을 모르겠어서 결국 ChatGPT에게 상황을 설명하고 원인을 물어보니.. 변수타입을 int에서 Integer로 바꿔줌으로써 memberId가 NULL일 수 있음을 표시하라고 한다.

원시 타입
- stack에 값이 그대로 저장되는 타입을 말한다.
- 어딜 참조하고 있는게 아니므로 보다 빠르게 값에 접근할 수 있다.
참조 타입
- stack에 값이 그대로 저장되어 있지 않다.
- stack에는 heap의 어딘가를 가리키는 주소가 저장되어 있다. 해당 주소를 따라가면 값을 찾을 수 있다.
- 실제 값이 stack에 저장되어 있는 것이 아니라 stack을 갔다가 heap을 가서 해당 값을 찾아야하므로
원시 타입에 비해 데이터 접근 속도가 느리다.
- 참조 타입은 보통 원시 타입에 비해 기능을 더 많이 제공해준다. 그래서 메모리를 더 많이 잡아먹는다.
- 자바에서 원시 타입은 제네릭 타입을 사용할 수 없지만 참조 타입은 가능하다.
int와 Integer의 차이
- int는 원시 타입이고 Integer는 int를 감싸서 만든 참조 타입이다.
- 따라서 int는 그냥 stack에 그 값이 저장되어 있지만 Integer는 stack에 heap을 가리키는 주소 값이 존재한다.
위에서 설명한 것처럼 int를 사용하는 것이 계산 속도와 메모리 사용 측면에서 이점이 있다.
단, java에서 int는 null을 넣을 수 없지만 Integer는 null을 처리할 수 있다.
그리고 Integer는 int를 감싸서 만든 것이므로 int를 갖고 할 수 있는 여러 메서드들을 제공해준다.
자바에서 int는 원시타입이기 때문에 null을 넣을 수 없지만 Integer는 참조타입으로써 null을 처리할 수 있다.

그래서, int memeberId를 Integer memberId로 선언해주고 에러 해결과 동시에 원하는 데이터의 갯수를 잘 보여준다!

