当要展示的表按时间取时,即一天一张表或者一个月一张表时,需要在findPager()方法里判断是否存在要展示的这张表,如果不做判断而数据库里又没有这张表,会报404的错。
eg: 修改BaseTemplateDaoImpl.java中的findPager()方法
String querysql = "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'itvsys' and TABLE_NAME='"+tableName+"'";
int tableCount = jdbcTemplate.queryForInt(querysql);
int totalCount = 0;
if(tableCount>0) {
totalCount = jdbcTemplate.queryForInt("select count(*) from " + tableName + where);
String order = "";
if (StringUtils.isNotEmpty(pager.getOrderBy()) && pager.getOrder() != null) {
order = " order by " + pager.getOrderBy() + " " + pager.getOrder();
}
String sql = "select * from " + tableName + where + order + " limit "
+ (pager.getPageNumber() - 1) * pager.getPageSize() + "," + pager.getPageSize();
// pager.setResult(jdbcTemplate.queryForList(sql));
pager.setResult(jdbcTemplate.query(sql, null, null, new RowMapper() {
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
T t = null;
try {
t = entityClass.newInstance();
Field[] fields = entityClass.getDeclaredFields();
for (Field field : fields) {
if (field.getName().equals("serialVersionUID")) {
continue;
}
ReflectionUtil.setFieldValue(t, field.getName(), rs.getObject(field.getName()));
}
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return t;
}
}));
}else {
try {
T t = entityClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
pager.setResult(new ArrayList<T>());
}
tips:
判断数据库里是否存在XX表的sql语句:
String querysql = "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'itvsys' and TABLE_NAME='"+tableName+"'";