package top.fastsql.util; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import top.fastsql.config.DataSourceType; import top.fastsql.dto.ResultPage; import java.util.ArrayList; import java.util.List; /** * @author 陈佳志 * 2017-08-15 */ public class PageTemplate { private NamedParameterJdbcTemplate namedParameterJdbcTemplate; public PageTemplate(NamedParameterJdbcTemplate template) { this.namedParameterJdbcTemplate = template; } public <T> ResultPage<T> queryPage(String sql, int page, int perPage, SqlParameterSource paramSource, RowMapper<T> rowMapper, DataSourceType dataSourceType) { if (page <= 0) { //查询全部 List<T> list = namedParameterJdbcTemplate.query(sql, paramSource, rowMapper); return new ResultPage<>(list,list.size()); } if (perPage <= 0) { //查询数量 String numberSQL = PageUtils.getSmartCountSQL(sql); Integer number = namedParameterJdbcTemplate.queryForObject(numberSQL, paramSource, Integer.class); return new ResultPage<>(new ArrayList<>(),number); } String rowsSQL = PageUtils.getRowsSQL(sql, page, perPage, dataSourceType); List<T> list = namedParameterJdbcTemplate.query(rowsSQL, paramSource, rowMapper); //查询数量 String numberSQL = PageUtils.getSmartCountSQL(sql); Integer number = namedParameterJdbcTemplate.queryForObject(numberSQL, paramSource, Integer.class); return new ResultPage<>(list, number); } public <T> ResultPage<T> queryPage(String sql, int page, int perPage, Object[] objects, RowMapper<T> rowMapper, DataSourceType dataSourceType) { if (page <= 0) { //查询全部 List<T> list = namedParameterJdbcTemplate.getJdbcOperations().query(sql, objects, rowMapper); return new ResultPage<>(list,list.size()); } if (perPage <= 0) { //查询数量 String numberSQL = PageUtils.getSmartCountSQL(sql); Integer number = namedParameterJdbcTemplate.getJdbcOperations().queryForObject(numberSQL, objects, Integer.class); return new ResultPage<>(new ArrayList<>(),number); } String rowsSQL = PageUtils.getRowsSQL(sql, page, perPage, dataSourceType); List<T> list = namedParameterJdbcTemplate.getJdbcOperations().query(rowsSQL, objects, rowMapper); //查询数量 String numberSQL = PageUtils.getSmartCountSQL(sql); Integer number = namedParameterJdbcTemplate.getJdbcOperations().queryForObject(numberSQL, objects, Integer.class); return new ResultPage<>(list, number); } }