核心代码如下
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晓码阁 版权所有