SelectPage selectPage = studentQuery.getSelectPage() != null
? studentQuery.getSelectPage()
: new SelectPage(1,20);
Student condition = studentQuery.getCondition();
StringBuilder sql = new StringBuilder("select `id`, `name`, `sex`, `birthday`, `qq`, `wechat`, `phone` from `t_student`");
StringBuilder sql1 = new StringBuilder("select count(0) from `t_student`");
List<Object> params = new ArrayList<>();
List<String> conditions = new ArrayList<>();
if (condition != null) {
if (StringUtils.hasText(condition.getName())) {
conditions.add("`name` LIKE ?");
params.add("%" + condition.getName() + "%");
}
if (StringUtils.hasText(condition.getSex())) {
conditions.add("`sex` = ?");
params.add(condition.getSex());
}
if (StringUtils.hasText(condition.getQq())) {
conditions.add("`qq` = ?");
params.add(condition.getQq());
}
if (StringUtils.hasText(condition.getWechat())) {
conditions.add("`wechat` = ?");
params.add(condition.getWechat());
}
if (StringUtils.hasText(condition.getPhone())) {
conditions.add("`phone` LIKE ?");
params.add("%" + condition.getPhone() + "%");
}
}
if (!conditions.isEmpty()) {
String whereClause = " WHERE " + String.join(" AND ", conditions);
sql.append(whereClause);
sql1.append(whereClause);
}
sql.append(" LIMIT ?,?");
params.add(selectPage.getOffset());
params.add(selectPage.getLimit());
JdbcTemplate jdbcTemplate = GlobalDBInfo.getJdbcTemplate();
Long total = jdbcTemplate.queryForObject(sql1.toString(),params.subList(0, params.size() - 2).toArray() ,Long.class);
selectPage.setTotal(total != null ? total : 0L);
RowMapper<Student> rowMapper = new BeanPropertyRowMapper<>(Student.class);
List<Student> query = jdbcTemplate.query(sql.toString(),params.toArray(),rowMapper);