2015-02-03 1 views
0

참고 : 데이터베이스로 스프링 프레임 워크 + MS-SQL을 사용하고 있습니다. 1 쿼리 - - 나는 두 개의 정수를 사용하여 검색에 대한 쿼리가있는 경우스프링을 사용하여 쿼리에서 여러 유형 매개 변수 보내기 또는 변환

은/ID는 다음 나는이

mybatis.xml 같은 것을 할 것 매개 변수>Integer + Integer

<select id="listProctorLogs" parameterType="java.util.Map" resultMap="logResultMap"> 
    select SchoolId, ProctorId, DateLog, LogType, ImageRecognized from ProctorLog where 
    SchoolId=#{schoolId} and ProctorId=#{proctorId} 
</select> 

자바 - 자바 1

HashMap<String, Integer> inputMap = new HashMap<>(); 
inputMap.put("proctorId", proctorId); 
inputMap.put("schoolId", schoolId); 
sqlSession.selectList("listProctorLogs", inputMap); 

하지만 내가 한 Integer 내가 쿼리 매개 변수, 다음 어떻게 JAVA에서 매개 변수를 전달하고 내가 mybatis.xml에서 그 방법을 얻을 수있는 전달하려는 하나 String이 있다면?

mybatis.xml - 쿼리 2 -

<select id="listProctorLogs" parameterType="java.util.Map" resultMap="logResultMap"> 
    select SchoolId, ProctorId, DateLog, LogType, ImageRecognized from ProctorLog where 
    SchoolName=#{schoolName} and ProctorId=#{proctorId} 
</select> 

JAVA 매개 변수>Integer + String로 - JAVA 2

// What should I put here ?? HashMap<String,String> 
// or HashMap<String,Object> ... and how can I get 
// these parameters in mybatis.xml if parameters are either 
// String or Object (convert to Interger) ?? 

답변

0

을 당신은 Map<String, Object> 버전을 사용합니다.

Map<String, Object> inputMap = new HashMap<>(); 
inputMap.put("proctorId", proctorId); 
inputMap.put("schoolName", schoolName); 
sqlSession.selectList("listProctorLogs", inputMap); 

그러나 이것은 코드를 올바르게 컴파일하는 것입니다. 런타임에 삭제 유형으로 인해 제네릭 정보가 존재하지 않습니다. 따라서 MyBatis의 경우 Map<String, Integer>, Map<Object, Object> 또는 심지어 Map이 아닌 일반 매개 변수를 사용하는 것과 다르지 않습니다. 런타임시 매개 변수 유형을 검사하고 적절한 TypeHandler을 사용하기 때문입니다.

+0

"Map ','Map '또는 제네릭이 아닌'Map' 자체를 언급 한 문서 나 기사를 참조 할 수 있습니까? 런타임에 매개 변수 유형을 지정하고 적절한 'TypeHandler'를 사용합니다. " 감사 – Junaid

관련 문제