当使用mybatis时,我有一个关于读取数据的问题,该数据被选择到一个给定的时间间隔。在xml文件中,我写道:
<select id="getRecord" parameterType="java.util.Map" resultType="com.domain.record">
select METHOD method, TIME_STAMP timeStamp
from RECORD
where TIME_STAMP BETWEEN #{startTime} AND #{endTime}
</select>
在另一个文件中,我这样写:
public List<Record> getRecord(String starttime, String endtime) {
Map<String, String> map = new LinkedHashMap<String, String>();
String startTime= "\'"+starttime + "\'";
String endTime= "\'"+endtime + "\'";
map.put("startTime",startTime);
map.put("endTime", endTime);
List<APIServerRecord> listRes=apiServerRecordMapper.getAPIServerRecord(map);
return listRes;
}
它不起作用。 listRes
的大小为零,我确信有很多记录,它不应该为零。我确信xml文件中的其他sql语句是可行的。同时,如果我直接在xml文件中给出时间,如下面的代码,它可以工作:
<select id="getRecord" parameterType="java.util.Map" resultType="com.domain.record">
select METHOD method, TIME_STAMP timeStamp
from RECORD
where TIME_STAMP BETWEEN '2013-06-18 12:11' AND '2013-06-18 12:16'
</select>
你能告诉我怎么做吗?
答案 0 :(得分:0)
建议转换为MyBatis正确处理的数据类型(处理程序类扩展为org.apache.ibatis.type.TypeHandler
)。
如果字符串的格式相同,您可以尝试:
private static DateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm");
public static Timestamp convert(String str) {
try {
Date date = dateFormat.parse(str);
return new Timestamp(date.getTime());
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
public List<Record> getRecord(String starttime, String endtime) {
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("startTime", convert(startTime));
map.put("endTime", convert(endTime));
List<APIServerRecord> listRes=apiServerRecordMapper.getAPIServerRecord(map);
return listRes;
}