neohwang
-66
2013-04-09 14:50:29
15
35896

MyBatis 에서 select count(*) 결과 저장 방법 문의


안녕하세요. 자바 초보가 도움 요청 드립니다. ㅠㅠ
아래 밑줄처럼 count(*)를 변수에 넣을려면 어떻게 하는지요?


<select id="selectCount" resultType="hashmap">
select count(*) from tb_user where id=#{id}
</select>

--------------------

HashMap map = new HashMap();
map.put("id", userid);
List dbdata = session.selectList("sbSelect.selectCount", map);
map.clear();
map=(HashMap) dbdata.get(0);
int count = (int) map.get(null);


0
0
  • 답변 15

  • bluerain
    2k
    2013-04-09 14:53:50
    <select id="selectCount" resultType="java.lang.Integer">
    select count(*) as cnt from tb_user where id=#{id}
    </select>

    해당 selectCount를 처리하는 method의 형을 int로 지정하면 됩니다.
    0
  • 대전개발자커뮤니티
    875
    2013-04-09 14:56:54
    쿼리 정의 파일에 기술된 쿼리문의 반환 타입을 아래와 같이 기술하시면
    resultType="int"

    아래와 같이 사용하시면 됩니다.
    int count = session.selectList("sbSelect.selectCount", map);

    만일 반환 되는 값을 지정하시려면 두 가지 방식 중 하나로 처리하시면 됩니다.
    1. 쿼리 정의 파일에 반환되는 리절트 값이 null 인 경우 디폴트 값 지정 방식
    2. 데이터베이스의 null 처리 방식 (오라클에 NVL 함수)

    0
  • 대전개발자커뮤니티
    875
    2013-04-09 14:59:17
    기본 (빌트인, 디폴트) 타입 관계를 참조하세요.
    아래 항목 중 아무거나 사용하시면 됩니다.
    java.lang.Integer
    int
    0
  • neohwang
    -66
    2013-04-09 15:01:10
    int count = (int)map.get("여기에 무엇을 넣어야 하죠?");
    0
  • 대전개발자커뮤니티
    875
    2013-04-09 15:01:55
    cnt
    0
  • neohwang
    -66
    2013-04-09 15:08:55
    아.. 안돼요..
    resultType="int" 로 바꾸고...

    List dbdata = session.selectList("sbSelect.selectCount", map); <--- 이부분
    map.clear();
    map=(HashMap) dbdata.get(0);<---- 이부분
    int count = (int) map.get(null); <----- 이분분

    에러가 계속 생겨서.. 잘 모르겠어요... 도와주세요.
    0
  • 대전개발자커뮤니티
    875
    2013-04-09 15:14:13
    쿼리문에 파라미터 정의 안되어 있네요.
    0
  • 대전개발자커뮤니티
    875
    2013-04-09 15:16:09
    parameterType="자바 데이터 타입"
    뭐 쿼리문에 이런거 정의 해줘야지 인라인 파라미터 뭐라도 걸리지 않을까요? ^^;;
    0
  • neohwang
    -66
    2013-04-09 15:16:43
    대전님.. 감사드리구요..
    파라미터 정의가 뭐죠? ㅠㅠ resultType="int" 이 부분인가요?
    0
  • neohwang
    -66
    2013-04-09 15:19:41
    parameterType="hashmap" resultType="int" 이렇게 넣어도 안되네요.
    0
  • 대전개발자커뮤니티
    875
    2013-04-09 15:22:09
    호출 API 는 여러 건을 가져오는 것이 아니라 한 건을 가져오는 것을 사용해야 합니다.
    int count = sqlSession.selectOne("쿼리문 아이디", 파라미터);

    쿼리문 정의 아래와 같습니다.
    <select id="쿼리문 아이디" parameterType="자바 데이터 타입" resultType="자바 데이터 타입">
    SELECT NVL(count(*), 0) FROM TB_USER WHERE ID=#{id}
    </select>
    0
  • 대전개발자커뮤니티
    875
    2013-04-09 15:23:14
    만일 처리가 안되었다면 에러 메시지 올려주세요
    0
  • neohwang
    -66
    2013-04-09 15:29:38
    아.. 됐습니다. ^^ 고맙습니다. 대전님..

    selectOne을 몰랐어요..
    0
  • 초보초보
    673
    2013-04-10 11:22:46
    셀렉트원 하시면되는건데 ㅎㅎ 모르셨군요
    0
  • inter
    2
    2016-12-31 16:50:00

    대전님덕분에 에러잡고 완성소스 올려봅니다. 감사요

    spring java

    int count = 0;
    		try {
    			count=memberService.selectCount(null);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		model.addAttribute("count",count);

    serviceImpl

    @Override
    	public int selectCount(Member member) throws Exception {
    		int result = 0;
    		try {
    			result = sqlSession.selectOne("MemberMapper.selectCount", null);
    		} catch (NullPointerException e) {
    			throw new Exception("selectMemberAdminCount==>null.");
    		} catch (Exception e) {
    			throw new Exception("selectMemberAdminCount==>exception.");
    		}
    		return result;
    	}


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.