我有一个groovy脚本,它从MYSQL数据库中提取了许多字段,并将数据插入到HTML表中,同时我找到了拉入数据库的文件的lastModified()
日期。 / p>
我发现了一个相当类似的主题:“按lastModified()排序文件”,但我的问题是我从未真正将数据放入地图或列表中,而是构建xml并使用{{1}调用查询}将正确的字段插入表中,然后在xml本身中找到sql.eachRow(query)
日期。
我无法在查询中进行排序,因为我必须从groovy脚本中获取lastModified()
日期。所以我有两个问题,是否可以使用我发布的代码中的设置按上次修改日期进行排序?如果是这样,我需要在哪里实际执行排序,以便在HTML表上正确排序?我应该说我是Groovy和Java的新手,在尝试弄清楚这些事情时非常糟糕,所以关于你在哪里找到这些信息的任何提示都会很棒。
类似主题,但不是我正在寻找的主题:
我的代码,我不得不改变一些事情:
lastModified()
答案 0 :(得分:2)
如果首先将SQL结果加载到List
,那么您可以对此映射进行排序,并迭代它以生成XML:
sql = Sql.newInstance("location of database", "username", "password", "driver")
writer = new StringWriter()
def xml = new MarkupBuilder(writer)
rptDate = new java.util.Date()
query =
"""
query stuff
"""
// Load the results into a list
List rows = sql.rows( query )
// Then manipulate the list to add the mod and fd fields
rows.collect {
mod = new File("/home/me/folderforfiles/${row.ID}.zip").lastModified()
fd = new Date(mod).format("EEE MMM dd hh:mm:ss a yyyy")
it << [ mod:mod, fd:fd ]
}
// Then sort it based on this field
rows = rows.sort { it.mod }
xml.html(){
head {
title "Title"
}
body {
h1 "Title"
table(border:1, cellpadding:5) {
tr {
th "ID"
th "Date Added"
th "Hospital Name"
th "Total Daily Clients"
th "Total Daily Pets"
th "Last Upload Date"
} //end headings
rows.each { row ->
tr( align:'center' ) {
td row.ID
td row.DateAdded
td row.HospitalName
td row.TotalDailyClients
td row.TotalDailyPets
td row.fd
}//end table data
}//end loop
}//end table
}//end body
}//end html
println writer.toString()
我没有尝试过,但它应该做你想做的事......如果你有任何错误,请告诉我,我会把它们整理出来......
当然,如果你有成千上万的行,将所有行加载到内存中将无法工作......如果是这种情况,那么你应该将lastModified Date存储在数据库中,并使用sql对结果进行排序查询