核心代码如下
public class BaseDao<T> {
/**
*
* @param sql
* 决定查询那张表的数据
* @param clz
* 查询出来的数据封装到那个实体类中
* @param pageBean
* 决定是否分页
* @return
* @throws IllegalAccessException
* @throws InstantiationException
* @throws SQLException
*/
public List<T> executeQuery(String sql, Class clz, PageBean pageBean)
throws InstantiationException, IllegalAccessException, SQLException {
List<T> list = new ArrayList<>();
Connection con = DBAccess.getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
try {
if (pageBean != null && pageBean.isPagination()) {
// 该分页了
String countSql = getCountSql(sql);
pst = con.prepareStatement(countSql);
rs = pst.executeQuery();
if (rs.next()) {
pageBean.setTotal(rs.getLong(1) + "");
}
String pageSql = getPageSql(sql, pageBean);
pst = con.prepareStatement(pageSql);
rs = pst.executeQuery();
} else {
pst = con.prepareStatement(sql);
rs = pst.executeQuery();
}
while (rs.next()) {
// list.add(new Book(rs.getInt("bid"),
// rs.getString("bname"),
// rs.getFloat("price")));
/*
* 1、创建了一个Book对象 2、从ResultSet结果集中获取值放入Book对象中属性中 2.1 获取到Book的属性对象 2.2 给属性对象赋值
* 3、将已经有值得book对象放入list集合中
*/
T t = (T) clz.newInstance();
Field[] fields = clz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
field.set(t, rs.getObject(field.getName()));
}
list.add(t);
}
} finally {
// shift+al+z
DBAccess.close(con, pst, rs);
}
return list;
}
/**
* 将原生sql拼接出符合条件的某一页的数据查询sql
*
* @param sql
* @param pageBean
* @return
*/
private String getPageSql(String sql, PageBean pageBean) {
return sql + " limit " + pageBean.getStartIndex() + "," + pageBean.getRows();
}
/**
* 用原生sql拼接出查询符合条件的记录数
*
* @param sql
* @return
*/
private String getCountSql(String sql) {
return "select count(1) from (" + sql + ") t";
}
}js分页伪代码
<form id='pageBeanForm' action='' method='post'>
<input type='hidden' name=''> <input type='hidden' name='page'>
</form>
<div style='text-align: right; font-size: 12px;'>
每页N条,共N条,第N页,共N页 <a href='javascript:gotoPage(?)'>首页</a> <a
href='javascript:gotoPage(?)'>上一页</a> <a
href='javascript:gotoPage(?)'>下一页</a> <a
href='javascript:gotoPage(?)'>尾页</a> <input type='text'
id='skipPage'
style='text-align: center; font-size: 12px; width: 50px;'> <a
href='javascript:skipPage()'>Go</a>
</div>
<script type='text/javascript'>
function gotoPage(page) {
document.getElementById('pageBeanForm').page.value = page;
document.getElementById('pageBeanForm').submit();
}
function skipPage() {
var page = document.getElementById('skipPage').value;
if(!page || isNaN(page) || parseInt(page)<1 || parseInt(page)>maxPage){
alert('请输入1~N的数字');
return;
}
gotoPage(page);
}
</script>
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有