注意:我使用Spring framework + MS-SQL作为数据库。
如果我有一个使用两个整数/ ID搜索的查询,那么我会做这样的事情
mybatis.xml - 查询1 - > 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>
JAVA - Java 1
HashMap<String, Integer> inputMap = new HashMap<>();
inputMap.put("proctorId", proctorId);
inputMap.put("schoolId", schoolId);
sqlSession.selectList("listProctorLogs", inputMap);
但是如果我想将一个Integer
和一个String
作为查询参数传递,那么如何从 JAVA <传递参数怎么办? / strong>以及如何在 mybatis.xml 中获取它们?
mybatis.xml - 查询2 - &gt; Integer
+ String
作为参数
<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 - 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 :(得分: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
。