有时候,我们的SQL语句可能会比较复杂,用DAO的query方法可能不能满足需要,就需要调用queryRaw方法来查询原生的SQL语句。 下例中,ShortMessage是Mode类
try {
GenericRawResults results = messageDao
.queryRaw(
"select id,_to,_from,message,MAX(date),username,_type,read from message group by username order by date desc;",
new RawRowMapper() {
@Override
public ShortMessage mapRow(
String[] columnNames,
String[] resultColumns)
throws SQLException {
// TODO Auto-generated method stub
ShortMessage message = new ShortMessage();
message.setId(Integer
.parseInt(resultColumns[0]));
message.setTo(resultColumns[1]);
message.setFrom(resultColumns[2]);
message.setMessage(resultColumns[3]);
String dateStr = resultColumns[4];// 存储格式为2012-12-05
// 14:46:23.000927
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
try {
message.setDate(sdf.parse(dateStr));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
message.setUsername(resultColumns[5]);
message.setType(Integer
.parseInt(resultColumns[6]));
int readed = Integer
.parseInt(resultColumns[7]);
if (readed == 0) {
message.setRead(false);
} else {
message.setRead(true);
}
return message;
}
});
Iterator iterator = results.iterator();
List messageList = new ArrayList();
while (iterator.hasNext()) {
ShortMessage message = iterator.next();
messageList.add(message);
}